プロジェクト内のすべてのアクションの前にコードを実行したいと思います(重要なグローバル変数を計算するため)。コントローラでプレアクション機能を設定するにはどうすればよいですか?
質問する
30988 次
3 に答える
28
Symfony2にはプレアクションメソッドはありません。そのためには、イベントリスナーを使用する必要があります。
于 2012-06-06T11:59:43.867 に答える
16
おそらくリスナーを使用することは、「コントローラーが初期化されたタスクの後」を実装するためのより洗練された方法ですが、それを行うためのより単純な方法があります。
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Override method to call #containerInitialized method when container set.
* {@inheritdoc}
*/
public function setContainer(ContainerInterface $container = null)
{
parent::setContainer($container);
$this->containerInitialized();
}
/**
* Perform some operations after controller initialized and container set.
*/
private function containerInitialized()
{
// some tasks to do...
}
このコードをコントローラーに挿入します。または、必要に応じて、コントローラーの基本的な親の抽象化にコードを挿入することもできます。
setContainer
コンテナーは初期化時に各コントローラーに設定されるため、コンテナー設定後にいくつかのタスクを実行するためにメソッドをオーバーライドできます。
于 2013-10-24T05:06:16.793 に答える
11
特にこのドキュメントページを読む必要があります:http ://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html
于 2013-04-03T10:53:12.590 に答える