为我的查询创建了一个全局的beforeFind()侦听器,但需要为某些请求分离它。 控制器中的$ this-> eventManager() - > off()无效。即没有取消事件。 在我的bootstrap.php文件中:
$modelListerner = new DeletedListener(); //my custom listerner
EventManager::instance()->on(
$modelListerner
);
答案 0 :(得分:0)
您无法在本地分离全局侦听器,您必须全局分离它,即通过
分离EventManager::getInstance()->off(/* ... */);
但是你可能想要考虑将选项传递给finder是否是一个更好的解决方案,这样你的控制器就不必了解监听器之类的东西,而只需要根据需要执行find调用,比如
$Table->find('all', ['doThisAndThat' => false]);
然后你的听众可以采取相应的行动。
来自文档的引用
[...]此列表中没有的任何选项都将传递给beforeFind侦听器,用于修改查询对象。
<强> Cookbook > Database Access & ORM > Retrieveing Data & Result Sets > Using Finders to Load Data 强>