Значения полей формы фильтра по языку

У меня есть конкретное требование показывать только категории выбранного языка меню. Поэтому в моем компоненте у меня есть поле, указанное ниже.

<field name="catid" type="categoryedit" label="JCATEGORY" description="JFIELD_CATEGORY_DESC" class="inputbox input-block-level" required="true"></field>

И в моей модели я динамически устанавливаю атрибут поля на основе языка меню.

public function getForm ($data = array(), $loadData = true)
{
  ....
  $language = JFactory::getLanguage()->getTag();
  $form->setFieldAttribute('catid', 'language', $language);
  ....
}

Он отлично работает. Однако единственная проблема заключается в том, что он отображает только список, предназначенный только для выбранного языка, например en-GB будет показывать только список значений, которые назначаются языку en-GB.

Мне нужно отобразить все значения полей, которые назначены выбранному языку, а также «Все» (или «*», т. е. язык не выбран).

Я не могу установить два значения в один и тот же атрибут поля, установив два раза переписать кулак.

$form->setFieldAttribute('catid', 'language', '*');

Это не работает вообще

$form->setFieldAttribute('catid', 'language', $language.', *');

Кто-нибудь знает, как я могу это сделать?

1 голос | спросил Nagarjun 9 Mayam15 2015, 09:19:56

2 ответа


1

После многих исследований я не смог найти никакого возможного решения. Поэтому я переопределил тип поля categoryedit и изменил следующий код в методе getOptions (поле может быть создано в каталоге моделей /полей вашего компонента, чтобы на него можно было ссылаться в форме xml)

// Filter language
if (!empty($this->element['language']))
{
    $subQuery->where('language = ' . $db->quote($this->element['language']));
}

к

// Filter language
$languages = array(JFactory::getLanguage()->getTag(), '*');
if (!empty($this->element['language']))
{
    $languages[] = $this->element['language'];
}

$subQuery->where('language IN (' . implode(',', $db->quote($languages)).')');

Надеюсь, это поможет любому, кто ищет подобное решение.

ответил Nagarjun 12 Maypm15 2015, 22:32:32
0

Вы можете просто изменить определение поля xml (models /forms /yourform.xml), чтобы включить дополнительный параметр, например:

<field name="catid" type="contentlanguage" label="yourlabel"
description="yourdescription">
<option value="*">JALL</option></field>

JALL будет автоматически переведен на ваш язык «Все».

Надеюсь, что поможет

ответил itsam 11 Maypm15 2015, 18:48:41

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132