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

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Всем доброго дня. Наткнулся на грабли...

Реализовываю (все еще) фильтрацию товара по свойствам. Для этого есть вид компонента, который читает входящие параметры jinput или принимает из меню id-набора предварительных настроек и после обработки выводит листинг товара.

Загвоздка встала в pagination. На любой странице отличной от 1 набор настроек фильтра не учитывается. Т.е. данные из формы модуля не попадают в обработку. Почему так мне понятно.

Вопрос такой как правильно это решить?

Варианты:
  • Обработку всех входящих параметров прогонять не через State, а через userState по приходу jinput limit и limitstart не производить обработку, а брать ее из userState
  • Как-то закинуть данные формы при нажатии на кнопку страницы

Первый вариант мне видится более удобным. Скажите ваше мнение.

А еще посоветуйте что-то почитать про обычный State, с ним у меня бывают непонятки. Например, почему в populateState конструкция $this->getState('aaa'); не работает?
*

mardok

  • Новичок
  • 5
  • 0 / 0
Добрый день.
Столкнулся с такой же проблемой. Как правильно настроить фильтр по заданному набору параметров? Возможно ли настроить для всех страниц одинаково или нужно делать для каждой страницы отдельно? Если возможно, подскажите как это прописать?
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Добрый день.
Столкнулся с такой же проблемой. Как правильно настроить фильтр по заданному набору параметров? Возможно ли настроить для всех страниц одинаково или нужно делать для каждой страницы отдельно? Если возможно, подскажите как это прописать?
Не могу сказать, что именно у вас... Я пишу свой фильтр. И сейчас решение с UserState мне помогло.
А именно, я проверяю пришли ли параметры limitstart и если пришли, то все читаю параметры из сессии, которые были установлены ранее (на предыдущей странице). Осталось решить вопрос захода сразу на не первую страницу. Если что-то конкретное спросите, скажу как это у меня.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
почему в populateState конструкция $this->getState('aaa'); не работает?
Потому что неправильно делать разную фигню в populateState, я вам об этом уже говорил. Вы еще рискуете попасть в бесконечный цикл, если populateState еще не был вызван. Задача populateState - заполнять параметры значениями. В нем можно делать getUserState или getUserStateFromRequest (кстати, очень полезная вещь), но никак не getState.
Возможно ли настроить для всех страниц одинаково или нужно делать для каждой страницы отдельно?
Это уж как вы сами решите. UserState - на уровне сессии, оно доступно везде. State - на уровне модели, в нем вы храните всю фигню только для данной модели, в т.ч. limit и start.

P.S. Используйте еще getStoreId в паре с setState/populateState.
« Последнее редактирование: 28.01.2020, 17:38:30 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
*

mardok

  • Новичок
  • 5
  • 0 / 0
Спасибо. С UserState все получилось. Действительно, если его использовать, то фильтр работает. Буду разбираться дальше.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Счётчик полей в админке модуля

Автор zeus07

Ответов: 9
Просмотров: 559
Последний ответ 28.06.2021, 13:40:31
от zeus07
Создание компонента для табеля рабочего времени

Автор sashahz

Ответов: 7
Просмотров: 476
Последний ответ 12.04.2021, 11:12:11
от sashahz
Вызов формы компонента в pop-up, при клике по ссылке из любого места

Автор SkyAn

Ответов: 1
Просмотров: 395
Последний ответ 01.03.2021, 04:08:48
от gartes
Документация по разработки компонента для Joomla 3.x

Автор Aspik

Ответов: 9
Просмотров: 2900
Последний ответ 23.01.2021, 07:55:56
от hmr
Сборка инсталятора компонента файлами из разных папок с привлечением github

Автор borro

Ответов: 1
Просмотров: 414
Последний ответ 25.12.2020, 21:21:30
от platonische