2

Silex マイクロフレームワークhttp://silex.sensiolabs.org/documentationで kernel.request イベントをリッスンしたい

どのように ?

4

3 に答える 3

11

ディスパッチャー サービスには as としてアクセスでき、その使用方法はこちらで$app['dispatcher']確認できます。しかし、Silex のイベントも呼び出されるので、代わりに使用する必要があると思います(使用方法の良い例を次に示します)。beforekernel.request

アップデート:

上記のリンクは古くなっています。フィルターが新しいミドルウェア セクションに移動する前に、次のように記述できます。

$app->before(function (Request $request) {
    // do what you want ...

    // if you want you can return a response so the controller won't be called
    // return new Response($content);

    // or just return null
});
于 2012-04-18T11:32:47.553 に答える
0

Silexミドルウェアの ドキュメントによると:

Silex を使用すると、ミドルウェアを介したリクエスト処理中のさまざまな段階で、デフォルトの Silex の動作を変更するコードを実行できます。

  • アプリケーション ミドルウェアは、現在処理されているリクエストとは無関係にトリガーされます。
  • 関連付けられたルートが一致すると、ルート ミドルウェアがトリガーされます。

アプリケーションミドルウェア

アプリケーション ミドルウェアは、マスターリクエストに対してのみ実行されます。

ミドルウェア以前

アプリケーションミドルウェアの前に、コントローラーが実行される前にリクエストを微調整できます。

$app->before(function (Request $request, Application $app) {
    // ...
});

デフォルトでは、ミドルウェアはルーティングとセキュリティの後に実行されます。

早い段階で例外がスローされた場合でも(たとえば、404 または 403 エラーで)ミドルウェアを実行したい場合は、それを早期イベントとして登録する必要があります。

$app->before(function (Request $request, Application $app) {
    // ...
}, Application::EARLY_EVENT);

この場合、ルーティングとセキュリティは実行されていないため、、、または にアクセスできませんlocalecurrent routesecurity user

于 2017-01-01T08:01:54.283 に答える