私はsymfony2を新しくしましたが、今は得られないことがいくつかあります。この場合、私はバンドまたはアーティストによって作られたすべてのアルバムを表示したいと思います。ユーザーがログインしている場合、1つのアルバムがこのユーザーのコレクション内にあるかどうかにかかわらず、同じページに表示する必要があります。Symfony2:他のバンドルからデータを取得するにはどうすればいいですか?
"ArtistBundle"、 "UserBundle"、 "AlbumBundle"などのバンドルは違っています。ユーザー関連の情報はArtistBundleに本当に属しているものではありません(「懸念の分離」)。 UserBundle
は今、私はこれを行うための唯一の二つの方法を参照してください。
は<?php
namespace Acme/ArtistBundle/Controller;
use Acme/UserBundle/User
public function indexAction()
{
...
$user = new User($userId);
$collectionInfo = $user->checkArtistAlbums($artistId);
...
}
このソリューションは、うまくいくかもしれないが、それは私が(私が思う正しい方法だろう)依存性の注入を使用していないので、難しくユニットテストを作るの。
もう1つの可能性は、UserBundleコントローラをテンプレートに埋め込むことです。私はArtistBundleの出力に直接情報が必要なので、これはできません。
ここで「ベストプラクティス」は何ですか? UserBundleサービスの定義何らかの方法で、UserBundleのオブジェクトがオブジェクトの構築時に設定されているArtistBundleを設定しますか?
私はすべてを1つの汎用バンドルに分割することに同意しません。それは懸念の分離を破ります。 –