3 нояб. 2015 г., 13:52

sendForward + modxSmarty

Добрый день. Столкнулся с такой проблемой: на сайте использую modxSmarty. Для неавторизированных пользователей на страницах личного кабинета отображаю форму входа используя sendForward. Но после успешной авторизации пользователю вместо содержимого страницы, с которой проходит авторизация, отображается страница входа с ссылкой «Выйти» (по умолчанию для компонента «Логин»). После сброса кеша все отображается как нужно. На всех шаблонах параметр phptemplates.non-cached выставлен в положение Да. Вызываемый сниппет так же с параметром nocache.
Подскажите как решить данную проблему?
Smarty работает не так, как MODX-шаблонизация. В нем весь код отрабатывается последовательно. sendForward, перенаправляет выполнение в другой документ, но не сбрасывает уже полученный код. У вас получается страница внутри страницы. То есть или используйте sendRedirect, который вызовет перезагрузку страницы в браузере, или еще что-то мыслите. Собственно, из-за этой неприятности пришлось создавать вьюхи в NewsModxBox, где отрабатываются подобные методы до вызова Smarty-шаблона. Например sendErrorPage(). Конечно, это все еще пока костыли, но больше соответствует подобным случаям.

Добавить комментарий