私は上記の要件を満たすためにTPやCIなどの他のフレームワークを使用してきましたが、簡単に実現できます。最近はSF2にも実装して共通機能を提供するバックエンドを自動作成するadminBundleを書きたいと思っています。ただし、次の問題が発生しました:
ユーザーのアクセス権限をバックグラウンドでグローバルに検出したいため、各コントローラーがトリガーされる前にコントローラーのリクエスト情報を取得し、ユーザーが対応する権限を与えているかどうかを確認します。コードは次のとおりです:
次に、背景レイアウトに 2 つのレンダリングを導入しました。メニューとパンくずリストのコードは次のとおりです。 リーリー
このようにして、2 つの sub_request が開始されますが、私の要件は、パンくずリストとメニューを実装するために sub_request 内の親リクエストの URL を取得することです。 SFにはいくつかの問題があります。サブアクションでリクエストスタックを取得することを提案した人がいましたリーリー
上記のアクションで request_stack を取得しようとしましたが、取得すると、このアクションでリクエストが開始され、リスナーがトリガーされてから else が実行され、権限が不十分であることを示すプロンプトにジャンプしたようです。私は混乱していて、理由がわかりませんでした。
kernel.controllerを監視し、判断を追加し、メインリクエストが行われたときにのみ権限をチェックするリスナー:
リーリー2.3 の FilterControllerEvent にはこのメソッドがありません。このロジックを参照して自分で記述してください:
https://github.com/symfony/symfony/blob/2.7/src/Symfony/Component/HttpKernel/Event/KernelEvent.php #L100