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 に答える