【问题标题】:how to deattach global event in cakephp 3如何在cakephp 3中分离全局事件
【发布时间】:2016-03-16 09:53:26
【问题描述】:

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

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

【问题讨论】:

    标签: php cakephp cakephp-3.0 cakephp-3.2


    【解决方案1】:

    你不能在本地分离一个全局监听器,你必须全局分离它,即通过

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

    但是您可能想考虑是否将选项传递给查找器可能是更好的解决方案,以便您的控制器不必了解侦听器等,而只需根据需要执行查找调用,例如

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

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

    引用自文档

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

    Cookbook > Database Access & ORM > Retrieveing Data & Result Sets > Using Finders to Load Data

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      相关资源
      最近更新 更多