0

为我的查找查询创建了一个全局 beforeFind() 侦听器,但需要为某些请求分离它。控制器中的 $this->eventManager()->off() 不起作用。即不解除事件。在我的 bootstrap.php 文件中:

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

1 回答 1

0

您不能在本地分离全局侦听器,您必须全局分离它,即通过

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

但是,您可能需要考虑将选项传递给 finder 是否是一个更好的解决方案,这样您的控制器就不必知道侦听器等,而只需根据需要执行 find 调用,例如

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

然后你的听众可以采取相应的行动。

从文档中引用

[...] 任何不在此列表中的选项都将传递给 beforeFind 侦听器,在那里它们可用于修改查询对象。

食谱 > 数据库访问和 ORM > 检索数据和结果集 > 使用查找器加载数据

于 2016-03-16T12:50:28.170 回答