Symfony2 服务 DI 无法解析我的构造函数参数



在我的symfony2应用程序中,我创建了一个听众来观看教义事件。

这是我的听众类:

use SymfonyComponentDependencyInjectionContainerInterface;
class ProductListener
{
    private $container;
    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }
    public function postPersist(Product $product, LifecycleEventArgs $args)
    {
        // some stuff
    }
} 

我想在构造函数中注入Symfony DI容器。因此,我像这样配置我的services.xml:

<container xmlns="http://symfony.com/schema/dic/services"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <parameters>
        <parameter key="doctrine.listener.product_listner.class">JDecoolBundleMyBundleListenerProductListener</parameter>
    </parameters>
    <services>
        <service id="doctrine.listener.product_listner" class="%doctrine.listener.product_listner.class%">
            <argument type="service" id="service_container" />
            <tag name="doctrine.event_listener" event="postPersist" />
        </service>
    </services>
</container>

配置看起来还可以,因为我没有任何错误。但是,当我的Listner捕获事件时,构造函数依赖性无法解决,我有一个错误:

ContextErrorException: Warning: Missing argument 1 for JDecoolBundleMyBundleListenerProductListener::__construct()

我不明白为什么无法解决依赖关系。我的听众是由我的实体注释的 entityListeners

注册的。

感谢您的帮助。

就像@cerad所说,EntityListeners注释与我注册的侦听器之间存在混乱。

如果我删除了Ethe EntityListeners注释,则可以完美工作!

相关内容

  • 没有找到相关文章

最新更新