我无法让它发挥作用。我需要在Doctrine监听器服务中提供请求范围的服务,该服务标记为doctrine.event_listener。
我尝试了这种https://github.com/symfony/symfony/issues/5486方法,但仍然没有运气。
我需要做的是这个服务定义:
<service id="acme.listener.on_insert" class="Acme\MyBundle\Listener\OnInsertListener">
<argument type="service" id="my_request_scope_service"/>
<tag name="doctrine.event_listener" event="onFlush" method="onFlush"/>
</service>
感谢任何帮助。感谢。
答案 0 :(得分:0)
您可以使用Symfony CookBook中How to Work With Scopes中所述的同步服务。
首先,您必须将my_request_scope_service
设为synchronized
。
然后在你的acme.listener.on_insert
中你必须修改注入setter所需服务的方式:
<service id="acme.listener.on_insert" class="Acme\MyBundle\Listener\OnInsertListener">
<call mehtod"setYourRequestScopeService">
<argument type="service" id="my_request_scope_service" on-invalid="null" strict="false" />
</call>
<tag name="doctrine.event_listener" event="onFlush" method="onFlush"/>
</service>
请注意,正如文档中所示,您必须在侦听器服务中处理可能的null
值,并且自版本2.3以来可以使用同步服务。