私は symfony2 が初めてで、今は理解できないことがいくつかあります。この場合、バンドまたはアーティストが作成したすべてのアルバムを表示したいと考えています。ユーザーがログインしている場合、このユーザーのコレクションに 1 つのアルバムがあるかどうか、同じページに表示したい。
「ArtistBundle」、「UserBundle」、「AlbumBundle」などのさまざまなバンドルがあります。ユーザー関連の情報は実際には ArtistBundle に属するものではないため (「関心の分離」)、UserBundle から情報を取得したいと考えています。
現在、これを行うには2つの方法しかありません。
<?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 をどうにか設定?