我很抱歉这个问题没有代码,但有没有像为每个网站页面触发的全局控制器?
例如,就我90%的网站内容而言,我希望有一个“最近的评论”供稿打印数据库中的所有最新评论。
我可以在哪个文件/功能中定义此类功能而无需在每个控制器中打印它?
答案 0 :(得分:3)
Symfony中没有全局控制器这样的东西。很久以前preDispatch
和postDispatch
已经消失了。
现在一切都是通过事件完成的。
如果要在执行控制器之前运行某些代码,则应向kernel.controller
事件添加一个侦听器。请参阅details about events in Symfony documentation。
This is the detailed explanation how to do it.
但是...
在你的情况下,我认为不需要这样做。相反,您可以使用Twig Etensions。将扩展名设置为服务(具有所有依赖项)。在您需要显示的地方打电话#34;最近的评论"。我认为在你的情况下Twig Functions最适合。
答案 1 :(得分:0)
我认为你的问题有点含糊不清,因为如果你正在寻找的是一个全局控制器,那么请求听众可能就是这样,但是在你想要这样做的例子中,请求监听器意味着对每个请求都有一个数据库查询,我强烈建议使用ESI包括这个http://symfony.com/doc/current/http_cache/esi.html,因为如果你想到它,你正在尝试的东西与Symfony的说法和更多的介绍,所以尝试从这个角度来解决它。