Класс DispatcherFilter
Этот абстрактный класс представляет собой фильтр, применяемый к циклу диспетчера. Он действует как обработчик событий, позволяющий изменять запрос или ответ по мере необходимости, прежде чем они будут обработаны контроллером или после того, как тело ответа будет построено.
Подклассы этого класса используют соглашение об именовании классов с суффиксом Filter.
Ограничение фильтров конкретными путями
Используя опцию for, вы можете ограничить пути запросов, к которым применяется фильтр. Как для события до, так и для события после будут применены одинаковые условия. Например, если вы хотите применить фильтр только к запросам блога, вы можете сделать так:
$filter = new BlogFilter(['for' => '/blog']);
Когда указанный выше фильтр подключен к диспетчеру, он будет срабатывать только своими методами beforeDispatch и afterDispatch на запросах, начинающихся с /blog.
Для условия можно также использовать регулярное выражение, используя префикс preg:.
$filter = new BlogFilter(['for' => 'preg:#^/blog/\d+$#']);
Ограничение фильтров на основе условий
В дополнение к простому соответствию путям, вы можете использовать замыкание для соответствия произвольным условиям запроса или ответа. Например:
$cookieMonster = new CookieFilter([ 'when' => function ($req, $res) { // Custom code goes here. } ]);
Если ваше условие «when» возвращает true, методы «before»/«after» будут вызваны.
При использовании соответствия for или when, условия будут повторно проверяться в обратных вызовах «before» и «after», так как условия могут измениться в течение цикла диспетчеризации.
- Cake\Routing\DispatcherFilter реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait
Непосредственные известные подклассы
Cake\Routing\Filter\AssetFilter, Cake\Routing\Filter\ControllerFactoryFilter, Cake\Routing\Filter\LocaleSelectorFilter, Cake\Routing\Filter\RoutingFilterПодробное описание методов
__constructsource public
__construct( array $config [] )
Конструктор.
Параметры
- массив
$configнеобязательно [] - Настройки для фильтра.
Исключения
InvalidArgumentExceptionКогда условия 'when' не вызываемы.
afterDispatchsource public
afterDispatch( Cake\Event\Event $event )
Метод, вызываемый после того, как контроллер обработал запрос и сгенерировал ответ. В этот момент можно изменить объект ответа, так как он еще не отправлен клиенту.
Если возвращено значение false, событие будет остановлено, и больше никаких слушателей не будут уведомлены. В качестве альтернативы можно вызвать $event->stopPropagation(), чтобы достичь того же результата.
Параметры
-
Cake\Event\Event$event - объект контейнера, содержащий ключи
requestиresponseв свойстве data.
beforeDispatchsource public
beforeDispatch( Cake\Event\Event $event )
Метод, вызываемый перед созданием контроллера и его вызовом для обработки запроса. Если используется приоритет по умолчанию, он будет вызван после того, как маршрутизатор проанализирует URL и установит параметры маршрутизации в объект запроса.
Если возвращается экземпляр объекта Cake\Network\Response, он будет обработан в конце цикла событий, не вызывая контроллер в результате. Это также приведет к тому, что событие after не будет вызвано в диспетчере.
Если возвращено значение false, событие будет остановлено, и больше никаких слушателей не будут уведомлены. В качестве альтернативы можно вызвать $event->stopPropagation(), чтобы достичь того же результата.
Параметры
-
Cake\Event\Event$event - объект контейнера, содержащий ключи
request,responseиadditionalParamsв свойстве data.
handlesource public
handle( Cake\Event\Event $event )
Метод обработчика, применяющий условия и выбирающий правильный метод для вызова.
Параметры
-
Cake\Event\Event$event - Экземпляр события.
Возвращает
mixedсмешанный тип
implementedEventssource public
implementedEvents( )
Возвращает список событий, за которыми следит этот фильтр. Диспетчер уведомляет о двух разных событиях Dispatcher.before и Dispatcher.after. По умолчанию этот класс будет подключать методы preDispatch и postDispatch соответственно.
Переопределяйте этот метод по своему усмотрению, чтобы отслеживать только интересующие вас события.
Возвращает
arrayмассив
Реализация
Cake\Event\EventListenerInterface::implementedEvents() matchessource public
matches( Cake\Event\Event $event )
Проверка соответствия входящего запроса критериям этого фильтра.
Параметры
-
Cake\Event\Event$event - Событие для проверки соответствия.
Возвращает
booleanлогическое значение
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDeletesource protected
_configDelete( string $key )
Удаление одного ключа конфигурации.
Параметры
- строка
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
_configReadsource protected
_configRead( string|null $key )
Чтение переменной конфигурации.
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
mixedсмешанный тип
_configWritesource protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный тип
$value - Значение для записи.
- логическое значение|строка
$mergeнеобязательно false - Истина для рекурсивной замены, 'shallow' для простой замены, ложь для перезаписи, по умолчанию ложь.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
configsource public
config( string|array|null $key null , mixed|null $value null , boolean $merge true )
Использование
Чтение всей конфигурации:
$this->config();
Чтение определенного значения:
$this->config('key');
Чтение вложенного значения:
$this->config('some.nested.key');
Установка определенного значения:
$this->config('key', $value);
Установка вложенного значения:
$this->config('some.nested.key', $value);
Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив|null
$keyнеобязательно null - Ключ для получения/установки или полный массив конфигураций.
- смешанный тип|null
$valueнеобязательно null - Значение для установки.
- логическое значение
$mergeнеобязательно true - Флаг для рекурсивной замены или перезаписи существующей конфигурации, по умолчанию истина.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallowsource public
configShallow( string|array $key , mixed|null $value null )
Объединение предоставленной конфигурации с существующей. В отличие от config(), которое выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка определенного значения:
$this->config('key', $value);
Установка вложенного значения:
$this->config('some.nested.key', $value);
Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанный тип|null
$valueнеобязательно null - Значение для установки.
Возвращает
mixedсам объект
Резюме свойств
Свойства, используемые из Cake\Core\InstanceConfigTrait
$_configInitializedsource
protected boolean
Указывает, была ли конфигурация уже настроена значениями по умолчанию
false
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/3.1/class-Cake.Routing.DispatcherFilter.html