Итак:
Есть модуль который рисует на странице категории 'чекбоксов' (на самом деле это ссылки) для фильтрации результата, при клике на них выводит отфильтрованные данные модели в указанную вьюху, где пользователь может их вывести удобным ему способом.
Задача уже реализована для yii2 фреймворка.
При установке модуля пользователю нужно указать в своём контроллере и во вьюхе, где нужно выводить данные -3 метода модуля с различными настройками:
в контроллере - начальные настройки модуля - модель, настройки кеширования, алиас до ajax вьюхи (в неё доставляются отфильтрованные данные), которая будет renderPartial()'ится в основную вьюху контроллера
в основной вьюхе - указываем какие чекбоксы мы рисуем, т.е. по каким свойствам модели и по каким значениям мы будем фильтровать данные
в основной вьюхе - методом указываем место, где будем рендерить ajax-вьюху с данными
Визуально это выглядит все вот так:
www.youtube.com/watch?v=Vah2j5WzXIs
Теперь про архитектуру:
При загрузке или обновлении страницы точка вызова модуля - соответственно метод модуля (где мы указываем модель и настройки модуля), вызванный в контроллере, далее из метода модуля мы стучимся в контроллер модуля, откуда идем в класс модуля, в котором собираем query и получаем данные из модели, которые передаем обратно в контроллер модуля, где затем выводим их в ajax-вьюху.
Самое главное, что все настройки модуля указываются при вызове модуля в контроллере пользователя.
Теперь проблема:
При клике на чекбокс мы ajax-ом стучимся напрямую в контроллер самого модуля и тут то встает проблема -
получить указанные ранее настройки модуля, а среди настроек находятся и объекты (модель, к примеру).
На данный момент я при первом вызове модуля помимо всего прочего пихаю все необходимые настройки в массив, который шифрую (методом yii2 encryptByKey() с ключом cookieValidationKey, который уникальный для каждого yii2 приложения), а после массив кладу в сессию. Соответственно, при ajax-запросе к контроллеру модуля я беру все настройки из сессии, расшифровываю тем же ключом и дальше уже работаю как обычно, получаю отфильтрованные данные и вывожу их в ajax-вьюху.
Собственно хотелось бы узнать -
как нужно изменить архитектуру модуля, что бы получать настройки модуля при ajax-запросе к модулю БЕЗ использования сессий, кук, БД и локал стораджей?
Условие - настройки модуля должны задаваться в контроллере, в котором этот модуль вызывается.
Пробовал вариант - долбиться ajax'ом в контроллер, из которого модуль вызывается, т.е. мы долбились туда и повторно получали его настройки, но выходили жуткие косяки с рендерами вьюх (в основной вьюхе рендерилась ещё раз основная вьюха)
Вот кривая картинка со структурой модуля, рисовал месяц назад и на скорую руку (минутка смеха =) )):