0

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

4

2 回答 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 回答