我使用KNPMenuBuilder创建菜单。我想在我的Builder.php中添加查询,但我需要通过Controller扩展Builder类。默认情况下,它由“ContainerAware”扩展。
我想问一下如何通过两个元素 - “ContainerAware”和“Controller”扩展Builder类? 或者如何在不扩展Controller的情况下创建DQL查询?
答案 0 :(得分:1)
Controller
类只是一个轻松使用控制器的“工具”(有些人甚至说使用它是一件坏事,因为它有点提倡服务定位器模式)。
您不应在除控制器之外的任何类中扩展Controller
。
要访问学说(例如Controller#getDoctrine()
方法),您应该请求doctrine
服务。然后你就像使用getDoctrine()
方法一样。
由于构建器扩展了ContainerAware
,您可以访问$container
属性,并且可以get()
doctrine
来自$doctrine = $this->container->get('doctrine');
$em = $doctrine->getManager();
$query = $em->createQuery(...);
服务:
{{1}}