1

私はSymfony2とFOSUserBundleの初心者ですが、今のところ大好きです。現在のところ、既存のテンプレート(layout.html.twigなど)をオーバーライドして、/ login、/profileなどをサイトの他の部分のスタイルに適合させることができます。ただし、FOSUserBundleを使用する前に、私の小枝は、phpコントローラーからナビゲーションバーやその他のウィジェットにあるリンクを取得しました。したがって、私の小枝はホームページのリンクやアカウントページがあることについて何も知りません。たとえば、私のbase.html.twigは、レンダリングするさまざまなオブジェクトの配列をループします。以前は、twigを呼び出すときにこれらを変数として渡していましたが、FOSUserBundleがすべての作業を実行するようになったため、これらの変数は入力されていません。

1つの解決策は、すべてのFOSUserBundleコントローラーをオーバーライドし、テンプレートエンジンを呼び出す場所を見つけ、グローバル関数をフックして現在のナビゲーションバーを取得したり、現在のステータスバーを取得したりすることです。潜在的なウィジェット、およびapp.user情報に基づいて切り替えます。本当に、私が欲しいのは、小枝に渡す前にFOSUserBundleにいくつかの情報を追加させることです。大量のコードを変更したりオーバーライドしたりせずにこれを実行したいと思います。ありがとう!

4

1 に答える 1

2
  • でコントローラーアクションを埋め込むことができ{% render %}ます。
  • グローバルを使用して、小枝がレンダリングするすべてのテンプレートにメニュー項目を挿入します。
  • 関数を使用してすべてのメニュー項目を取得し、{% include %}
  • 独自のタグを作成する{% myAwesomeMenu %}
于 2012-07-09T08:25:08.313 に答える