1

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

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

因此,尽管我的问题有一个解决方案(在类似问题中链接),但我的问题是,有没有一种方法可以使用良好的实践来完成它?或者一开始有没有更好的方法?

4

1 回答 1

2

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

所以,我会MenuManager知道存储库/实体管理器并将其注入到扩展中。

于 2013-02-26T15:30:06.970 回答