Symfony服务参数被忽略

时间:2017-02-28 23:49:10

标签: symfony listener

我有一个用注释声明的实体监听器

...
 * @ORM\EntityListeners({ "EnvBundle\Listener\UserListener" })
 */
class User implements UserInterface, \Serializable
{
...

并且因为该监听器应该注入一个参数,比如一个字符串,我将它声明为service.yml文件中的服务

services:
    env.listener.user:
        class: EnvBundle\Listener\UserListener
        arguments:    ['humpty dumpty']

听众大致是这样的

<?php
namespace EnvBundle\Listener;

use Doctrine\ORM\Event\LifecycleEventArgs;
use EnvBundle\Entity\User;

class UserListener
{

    public function __construct(string $s)
    {
        dump('no good: ' . $s);
    }

    public function prePersist(User $entity, LifecycleEventArgs $args)
    {
        $em = $args->getEntityManager();
        dump($entity);
        // die;
    }
}

结果是忽略了通过服务注入的参数,我收到以下错误

  

类型错误:参数1传递给   EnvBundle \ Listener \ UserListener :: __ construct()必须是该类型   字符串,没有给出

一旦我声明没有参数的构造函数,它就会被执行。我无法找到我缺少的东西,以便将参数注入实体监听器。

编辑 :通过检查debug:容器,服务确实存在

有什么建议吗?

0 个答案:

没有答案