как отсоединить глобальное событие в cakephp 3

создал глобальный слушатель beforeFind () для моих запросов поиска, но для некоторых запросов его нужно отключить.
$ this-> eventManager () -> off () в контроллере не работает. т.е. не отсоединять событие.
В моем файле bootstrap.php:

$modelListerner = new DeletedListener(); //my custom listerner
EventManager::instance()->on(
$modelListerner
);

0

Решение

Вы не можете локально отключить глобальный слушатель, вы должны отключить его глобально, т.е.

EventManager::getInstance()->off(/* ... */);

Однако вы можете подумать о том, может ли передача опций поисковику быть лучшим решением, так что вашим контроллерам не нужно знать о слушателях и т. П., А просто выполнять вызовы find по мере необходимости, например

$Table->find('all', ['doThisAndThat' => false]);

и ваш слушатель сможет действовать соответственно.

Цитата из документов

[…] Любые опции, которых нет в этом списке, будут переданы слушателям beforeFind, где они могут быть использованы для изменения объекта запроса.

Поваренная книга> Доступ к базе данных & ORM> Получение данных & Наборы результатов> Использование Finders для загрузки данных

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]