在我的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注释,则可以完美工作!