【发布时间】:2017-08-28 20:33:51
【问题描述】:
这是我的 service.yml :
services:
foo.builder:
class: MyBundle\Core\MyClass
foo.twig_extension:
class: MyBundle\Twig\BarExtension
arguments: ['@foo.builder']
tags:
- { name: twig.extension }
foo.listener.foolistener:
class: MyBundle\EventListener\MyListener
arguments: ['@service_container']
tags:
- { name: kernel.event_listener, event: kernel.controller, method: createFooObject }
我的听众总是在我的树枝扩展之前开始,这很好,但不仅仅是在清除缓存之后...... 我的应用程序总是第一次崩溃(在清除缓存或更改参数之后),因为我的 twig 扩展需要有一个对象已经被监听器水合。所以如果它之前启动,它通常会崩溃:(
1/有什么问题?
2/ 我怎样才能强制我的听众总是在树枝扩展之前开始?
欢迎提出建议
【问题讨论】:
-
你不能。 Twig 扩展将始终在侦听器被调用之前创建。您需要做的是在调用 twig 过滤器或函数时获取您的对象。
-
但是...只是第一次清除缓存后???
-
您误解了关于缓存清除的结论。我假设 MyListener::createFooObject 的结果最终出现在您的扩展中?也许发布更多代码,也许我们可以确切地看到发生了什么。
标签: php symfony service listener twig-extension