У меня есть действие контроллера (мы можем назвать это listPageAction
). Это действие управляет моим основным видом (список элементов). Эти элементы могут быть отфильтрованы (это управляется этим же действием).
Я хочу сохранить значения фильтров между разными страницами (= Действия) и восстановить их, когда я вернусь в основной вид (listPageAction
).
Я не могу использовать session
потому что приложение часто используется в нескольких вкладках браузера, поэтому сеанс может столкнуться.
Я не могу передать «вручную» элементы фильтров, потому что с других страниц я могу попасть на другие страницы и т. Д. (Это иерархический список страниц). Не оптимально передавать 3 переменные каждому маршруту, каждому действию.
Использовать глобальную переменную будет хорошо, но я не уверен, возможно ли это, как классическая глобальная переменная в PHP. Я прочитал несколько вещей с глобальной переменной Twig (которую я использую для визуализации). Это будет возможно для моей необходимости? Как ?
Другая возможность, которую я должен идентифицировать (но я не знаю, как я могу использовать это), будет использовать Listener
, Я думаю, что я могу добавить свои значения фильтров в каждом ответе (kernel.response
).
Но я не знаю, как передать слушателю фильтры и как восстановить их listPageAction
когда я вернусь на главную страницу.
заранее спасибо
Вы можете вручную указать уникальный параметр между каждой страницей, ключ.
Таким образом, вы можете использовать сеанс, используйте клавишу, чтобы различать их между несколькими вкладками.
URL будет page/{key}/step1
а также page/{key}/step2
сеанс хранения объектов будет выглядеть как $session->get($key.".object");
Других решений пока нет …