我需要为$session->getFlashBag()->add('foo', $bar);每个控制器添加一个 FlashBag 代码,以及获取$bar. 我想知道是否有更好的方法然后将代码复制+粘贴到每个控制器中?会有某种主控制器吗?
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   回答