微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Symfony 3.4:如何将服务注入实体侦听器?

如何解决Symfony 3.4:如何将服务注入实体侦听器?

考虑以下侦听器代码

namespace My\Bundle\Listeners;
        
class MyListener
{
    public function __construct(UserManager $userManager,LoggerInterface $logger)
    {
        this->userManager = $userManager;
        $this->logger = $logger;
    }
       
    // ...
}

配置文件

services:
  _defaults:
    autowire: true
    autoconfigure: true
    public: false

My\Bundle\Listeners\MyListener:
    arguments:
      - '@My\Bundle\Manager\UserManager'
      - '@logger'
    tags:
      - { name: doctrine.event_listener,event: preUpdate }
      - { name: doctrine.event_listener,event: postFlush }

和实体:

/**
 * @ORM\Entity()
 * 
 * @ORM\EntityListeners({"My\Bundle\Listeners\MyListener"})
 */
class MyEntity
{
}

它给了我错误

函数的参数太少 My\Bundle\Listeners\MyListener::__construct(),0 传入 /var/www/project/vendor/doctrine/doctrine-bundle/Mapping/ContainerEntityListenerResolver.PHP 在第 80 行,预期正好有 2 个

如果我删除 @ORM\EntityListeners 注释,它就像侦听器不存在一样。

有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。