Symfony2在Twig扩展中使用实体管理器

时间:2013-02-26 13:55:07

标签: symfony doctrine-orm twig

我正在使用Tree Doctrine extenion创建菜单系统,我想创建一个Twig扩展,以根据请求的父节点显示菜单,例如{% display_menu(side_menu) %}。此功能将位于基本树枝模板中(即菜单位于网站的每个页面上)。

由于我将使用Doctrine存储Menu结构,我认为我需要访问Twig扩展中的MenuRepository,因此我遇到的第一个问题是将实体管理器放入其中。在寻找解决方案时,few people表示这是不好的做法,因为Twig扩展是View的一部分,这是有道理的。

所以虽然我的问题有一个解决方案(在类似的问题中链接),但我的问题是,有没有办法可以使用良好的实践来完成它?或者,首先有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

让实体了解任何服务 - 包括实体经理 - 是一种不好的做法。将EM注入到Twig扩展中没有任何问题。虽然,我宁愿将模型管理器注入到Twig扩展中,这样扩展就不会知道持久层 - 这是管理层的工作。

所以,我有MenuManager知道repositores / entity manager并将其注入扩展。