php - 即使定义了服务,Symfony 事件订阅者也无法工作

标签 php symfony doctrine-orm

我有一个事件订阅者:

namespace App\EventListener;

use App\Entity\Token;
use App\Model\EncryptUtils;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\Common\EventSubscriber;

class DatabaseSubscriber implements EventSubscriber
{

    public function getSubscribedEvents()
    {
        return array(
            'prePersist'
        );
    }

    public function prePersist(LifecycleEventArgs $args)
    {
        $entity = $args->getObject();

        if ($entity instanceof Token) {
            $enityt->setCreatedAt(new \DateTime());
        }
    }
}

我已经在 services.yaml 中声明了该服务: 参数: 区域设置:'en'

services:

    App\EventListener\DatabaseSubscriber:
        tags:
            - { name: doctrine.event_subscriber, connection: default }

    _defaults:
        autowire: true      
        autoconfigure: true
        public: false       

        bind:
            $appSecret: '%kernel.secret%'

    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

但是没有办法让它工作。我也尝试过使用事件监听器,但没有任何反应

最佳答案

您应该在所有默认配置之后声明您的服务,因为如果没有,默认配置将覆盖您的服务。
所以你的 services.yaml 文件应该是:

services:

    _defaults:
        autowire: true      
        autoconfigure: true
        public: false       

        bind:
            $appSecret: '%kernel.secret%'

    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

    App\Controller\:
        resource: '../src/Controller'
        tags: ['controller.service_arguments']

    App\EventListener\DatabaseSubscriber:
        tags:
            - { name: doctrine.event_subscriber, connection: default }

关于php - 即使定义了服务,Symfony 事件订阅者也无法工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52966746/

相关文章:

php - 我可以使用常量名称的变量来访问 PHP 类常量吗?

php - laravel 集合到数组

php - 使用SoX合成可变长度多音调音频,同时避免裁剪

validation - 单元测试 - 使用实体管理器进行自定义类验证

symfony - OneToMany 关系不会与新实体一起持续存在

php - 查找特定日期/任何年份的所有行

symfony - 使用 Behat 3、Doctrine 2 和 Symfony 2 测试数据库隔离

php - 将 PHP switch case 与 html 混合的更简洁的方法

forms - symfony2 通过服务来形成主题

具有动态参数的 Symfony2 KnpMenuBundle 子级