KnpMenuBundle,通过ContainerAware和Controller扩展Builder

时间:2014-02-05 15:15:57

标签: symfony knpmenubundle

我使用KNPMenuBuilder创建菜单。我想在我的Builder.php中添加查询,但我需要通过Controller扩展Builder类。默认情况下,它由“ContainerAware”扩展。

我想问一下如何通过两个元素 - “ContainerAware”和“Controller”扩展Builder类? 或者如何在不扩展Controller的情况下创建DQL查询?

1 个答案:

答案 0 :(得分:1)

Controller类只是一个轻松使用控制器的“工具”(有些人甚至说使用它是一件坏事,因为它有点提倡服务定位器模式)。

您不应在除控制器之外的任何类中扩展Controller

要访问学说(例如Controller#getDoctrine()方法),您应该请求doctrine服务。然后你就像使用getDoctrine()方法一样。

由于构建器扩展了ContainerAware,您可以访问$container属性,并且可以get() doctrine来自$doctrine = $this->container->get('doctrine'); $em = $doctrine->getManager(); $query = $em->createQuery(...); 服务:

{{1}}