【问题标题】:Symfony2 use Doctrine in ExceptionControllerSymfony2 在 ExceptionController 中使用 Doctrine
【发布时间】:2015-01-07 01:10:13
【问题描述】:

您好,我正在尝试在默认 ExeptionController 中使用 Doctrine,但出现以下错误:

致命错误:调用未定义的方法 Symfony\Bundle\TwigBundle\Controller\ExceptionController::getDoctrine()

当我尝试打电话时:

$manager = $this->getDoctrine()->getManager();

我想做的是有一个自定义的 404 页面,我可以在其中展示数据库中的一些项目。

你能帮帮我吗?谢谢!

【问题讨论】:

  • 你可以使用这个方法,因为ExceptionController不扩展Controller类,你必须扩展这个类并注入Doctrine。
  • 谢谢,我已经扩展了Controller类,现在错误是:致命错误:在(....)/vendor/symfony/中的非对象上调用成员函数has() symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php 上线 198 503 服务不可用
  • 但是你注入 Doctrine 存储库了吗?,通过你的控制器发布,我们会看看它
  • 不,我没有。 Controller 是默认的 Symfony\Bundle\TwigBundle\Controller\ExceptionController,内部并没有什么不同,只是我需要从数据库中抓取一些东西在 404error.twig.html 上显示它

标签: symfony doctrine


【解决方案1】:

您也可以将 Doctrine 服务作为依赖项注入到您的 Controller 中(在这种情况下,您不需要将类 Controller 引入)

【讨论】:

  • 能否请您举个例子,如何将 Doctrine 服务作为依赖项注入到默认的 ExeptionController 中?谢谢!
【解决方案2】:

您必须创建自己的 ExceptionController 来扩展默认的。您必须按照此处所述声明它:http://symfony.com/doc/current/cookbook/controller/error_pages.html#custom-exception-controller。您的自定义控制器必须有一个构造函数,其中至少有一个 Registry (Doctrine) 类型的参数。您必须在您的 service.yml(或 xml 取决于您的配置)中将该控制器声明为服务。查看 symfony 文档以获取有关如何执行此操作的进一步说明。目前我无法为您提供更多帮助,因为我在外面使用我的 Android 设备,而且很难做出长篇大论的回答

【讨论】:

  • 谢谢。我会尝试这种方式。
  • 我回到家,在真正的电脑上打字。您可以在此处找到有关服务容器的文档:symfony.com/doc/current/book/service_container.html 这很简单,如果您使用 SF2,您会经常使用这些概念
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多