Cakephp 3.0 - выполнение AppController::beforeFilter() в случае MissingRouteException

В моем приложении я определяю (среди прочего) локаль на основе предпочтений пользователя, хранящихся в файлах cookie, если таковые имеются, или с помощью настроек его браузера. Все это делается в AppController::beforeFilter().

Проблема: для ошибок 404, вызванных исключением отсутствия маршрута, запрос не достигает контроллера. Таким образом, мой шаблон error400.ctp не отображается с правильным языковым стандартом.

Поэтому определение локали в AppController::beforeFilter может быть не лучшей практикой. Любая идея, где я должен это сделать?


person PGBI    schedule 09.04.2015    source источник


Ответы (1)


Я бы поместил логику в DispatcherFilter:

http://book.cakephp.org/3.0/en/development/dispatch-filters.html

Вы можете взглянуть на это для вдохновения:

https://github.com/cakephp/cakephp/blob/master/src/Routing/Filter/LocaleSelectorFilter.php

person José Lorenzo Rodríguez    schedule 10.04.2015