Symfony事件监听器没有触发

时间:2014-07-14 14:46:10

标签: php symfony event-handling

我在这个上面挠头,所以也许有人可以帮助我。我之前没有遇到任何问题,但我是Symfony的新手,所以这次我很可能错过了一些东西。

每当我保存实体时,我都会尝试加载一个事件监听器来触发一些代码。

在我的app / config / config.yml中,我把它放了。

services:
    fu_bar.listener:
        class: Fu\BarBundle\EventListener\AuthCheckListener
        tags:
            - { name: doctrine.event_listener, event: postPersist, connection: default }
            - { name: doctrine.event_listener, event: preUpdate, connection: default }

在我的Fu \ BarBundle \ EventListener \ AuthCheckListener中我只是这样做,所以我可以看到我正在使用这些方法,我不是。

<?php
namespace Fu\BarBundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;

class AuthCheckListener {
    public function preUpdate(LifecycleEventArgs $args) {
        file_put_contents('/tmp/yyy', 'ffdf');
    }

    public function postPersist(LifecycleEventArgs $args) {
        file_put_contents('/tmp/xxx', 'fff');
        //$this->syncAuth($args);
    }    
}

当我保存实体时,我希望在/ tmp中看到一些文件,但我不是。事件监听器正在注册并不会出现。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

doctrine:event_listener应为doctrine.event_listener

  • 使用点符号获取服务和参数
  • 对控制器,视图和这些“对象”使用冒号表示法