我已关注Symfony2.2 documentation on customising error templates并按照 Twig 的描述覆盖 app/Resources/TwigBundle/views/Exception/error.html.twig
处的默认错误模板。
例如,在某些 Controller 中,当数据库实体不存在时,我会抛出自定义 404。我正在这样做:
throw $this->createNotFoundException('Thing not found');
当我的自定义模板存在时,不会捕获此异常,因此我的错误页面永远不会呈现,并且出现 fatal error 。我没有更改任何与异常处理程序有关的内容,所以我不明白为什么覆盖模板会破坏 Symfony 错误渲染功能。
看起来 Twig 异常 Controller 的 showAction
正在执行,但异常仍然被抛出堆栈。
需要做什么来确保捕获并呈现异常?
其他信息:
记录以下内容。 (仅更改客户名称)
[2013-05-22 16:26:22] request.INFO: Matched route "show_thing" (parameters: "_controller": "Client\SiteBundle\Controller\ThingController::indexAction", "id": "thing", "_route": "show_thing") [] []
[2013-05-22 16:26:22] security.INFO: No expression found; abstaining from voting. [] []
[2013-05-22 16:26:22] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "thing not found" at /home/vhosts/client/symfony/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php line 149 [] []
最佳答案
我已经解决了。
我的模板有一个未在布局中定义的 block 。
此错误未记录,但足以破坏渲染,
感谢@nifr 的所有帮助。
关于symfony - 为什么覆盖错误模板时未捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689452/