我是 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);
...
}
这个解决方案可能有效,但它使单元测试更难,因为我没有使用依赖注入(我认为这是正确的方式)。
另一种可能性是将 UserBundle 控制器嵌入到模板中。这是无法完成的,因为我需要直接在 ArtistBundle 的输出中提供信息。
那么这里的“最佳实践”是什么?定义一个 UserBundle 服务?以某种方式配置在对象的构造中设置了 UserBundle 对象的 ArtistBundle?