Всем привет стандартные фильтры выглядят так:
Например выпадающий список категорий
<select id="filter_category_id" name="filter_category_id" onchange="this.form.submit()" title="" >
<option value=""><?php echo JText::_('ALL_CATEGORIES');?></option>
<?php echo JHtml::_('select.options', "массив_вариантов", 'value', 'text', $this->state->get('filter.category_id'));?>
</select>
myModel->populateState()
// Берем значения выбранного фильтра из состояния, где имя filter_category_id. Для фильтрации в getListQuery().
$category = $this->getUserStateFromRequest($this->context . '.filter.category_id', 'filter_category_id');
// Устанавливаем выбранное состояния фильтра для выпад.списка select.
$this->setState('filter.category_id', $category );
Все просто, есть имя, есть фильтрация!
Ну так вот. При создании пользовательских фильтров в кастомном компоненте имя фильтра заранее не известно и его невозможно прописать в шаблоне и в модели для синхронизации. Я использовал для пользовательских фильтров ID таблицы БД. У меня получается
<select name="customfilter_N" .../>, где N это ID фильтра. Теперь не могу в
populateState() отловить имя фильтра
$this->getUserStateFromRequest($this->context . '.customfilter', 'customfilter_'.$N ); Какие есть мысли?
Единственный для меня пока рабочий способ это делать еще один запрос в БД из таблицы
customfilters тянуть все существующие ID. Перебором подставлять в
'customfilter_'.$N и проверять существование такого имени в запросе. Не слишком ли это? Получается код будет выполнятся каждый раз при
обновлении/загрузке страниц.