Symfony 2.0アプリケーションの構造に関するベストプラクティスに関するガイダンスを探しています。私はいくつかのバンドル(カートバンドル、製品バンドル、CMSバンドル)を持っていて、私のページを作成するときにこれらのバンドルのすべての側面を使用したい場合、どうすればいいのですか?symfonyのバンドル構成、複数のバンドルを使用する場合のコードの構成方法
私はこれを行う2つの方法を想像することができますが、(いずれかの場合)正しいかどうかについてのガイダンスを探しています。
1)私のバンドルのすべての機能をサービスを通じて公開し、これらのサービスをtwig内から直接使用できるようにしてください。この方法で、最も適切なバンドルにルーティング要求を渡すことができます(http://myclient.org/User/Account)。これは、処理するClientUserバンドルに渡されますが、ナビゲーション内にミニショッピングカートを持つ基本テンプレートは、 (これを渡す必要はありません)
2)他のすべてのバンドルにアクセスするバンドルを作成して、ページをビルドします(VendorFrontendやVendorBackendなど)。これは、すべてのルーティング要求がこのバンドルに渡されることを意味し、このバンドルはテンプレートに渡す前にページのすべての部分について必要な情報にアクセスします。
最初のオプションが間違っていると感じました。なぜなら、Twigがサービスを直接消費することを許可することさえできないのかどうかわからないからです(サービスコンテナを介して)?
2番目のオプションは2番目のルータを使用するようなものなので、ルートは別のバンドルを構成するためだけに存在するバンドルに渡されます(このバンドルはバンドルに密接に結合されています使用する)。確かに、これはコードが再利用可能であるという「バンドル」の概念に反するものです。
この例では、デモンストレーションのために非常に簡単なe-comサイトを構築しようとしています。私は基本的なナビゲーション、ミニショッピングカート、ボディとフッタを持つベーステンプレートを持っています。これを/ app/Resourcesディレクトリに保存します。他のすべてのテンプレートにこのテンプレートを継承し、 'body'領域をオーバーライドすることを計画していました。
スプーンフードしたくない、正しい方向のちょっとした動き。ありがとう。
ちょうど非常に古い質問のupvoteを見た。その答えは、必要に応じてサブリクエストを使用し、必要に応じて小枝拡張を使用することです。上記で議論した第2の選択肢は、アプリケーションが成長し始めるときに実行可能なオプションでさえありません。個々のバンドルにもひどく結合しています。 TL; DR。 1 – calumbrodie