我需要为$session->getFlashBag()->add('foo', $bar);
每个控制器添加一个 FlashBag 代码,以及获取$bar
. 我想知道是否有更好的方法然后将代码复制+粘贴到每个控制器中?会有某种主控制器吗?
问问题
197 次
2 回答
3
我建议您创建一个侦听器,该侦听器将在您指定的每个控制器之前运行。遵循本指南将显示设置它所需的一切:
http://symfony.com/doc/2.0/cookbook/event_dispatcher/before_after_filters.html
于 2013-01-25T18:02:58.393 回答
0
http://symfony2.ylly.fr/symfony2-simulate-preexecute-postexecute-filters-actions-jordscream/
您应该尝试实现服务并为其注册onCoreController
,然后执行$event->getController()->preAction()
(或您想要的任何函数名称......),然后您可以在控制器中实现您需要功能的那些方法
就像是
src/My/Bundle/RequestListener.php:
public function onCoreController(FilterControllerEvent $event) {
$evntController = $event->getController();
if (method_exists($evntController[0], 'beforeFilter')) {
$evntController[0]->beforeFilter();
}
}
在这里查看更多信息
http://symfony.com/doc/2.0/book/internals.html#the-event-dispatcher
http://symfony.com/doc/2.0/book/internals.html
http://symfony.com/doc/current/cookbook/service_container/event_listener.html
于 2013-01-26T07:21:45.517 回答