Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 0 Ответов
  • 449 Просмотров
*

ghostcom

  • Захожу иногда
  • 103
  • 1 / 0
Всем привет стандартные фильтры выглядят так:
Например выпадающий список категорий
Код

<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 и проверять существование такого имени в запросе. Не слишком ли это? Получается код будет выполнятся каждый раз при обновлении/загрузке страниц.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как вывести список списков?

Автор Заварник

Ответов: 3
Просмотров: 687
Последний ответ 07.12.2017, 13:19:38
от SeBun
Добавить свои фильтры поиска

Автор denism300

Ответов: 3
Просмотров: 1021
Последний ответ 05.11.2016, 17:14:35
от denism300