Symfony - Twig渲染控制器异常不会重定向到错误页面

时间:2016-03-30 10:49:10

标签: php symfony exception controller twig

我有一个包含多个布局的Symfony项目。其中一些使用以下方法加载标题:

{{ render( controller("AppBundle:Partial:header") ) }}

标题包含一些用户数据,在某些时候会引发Twig_Error_Runtime异常(在每个页面上)。

由于标头也用在自定义错误页面上,因此创建了一个循环并且内存不足。显然,这只发生在prod环境中,因为dev不使用自定义错误页面。

我创建了一个测试标头控制器的路由:

/**
 * Header partial
 * 
 * @Route("/header", name="header")
 *
 */
public function headerAction(Request $request) {
    [...]
    return $this->render(self::PARTIAL_BASE_PATH . "/_header.html.twig", $data);
}

如果我访问路线/header,它会正确显示自定义错误页面。

我从错误页面中删除了包含用户数据的标题,希望能解决问题,但现在它显示了初始页面,没有任何标题。错误日志显示:

request.CRITICAL: Uncaught PHP Exception Twig_Error_Runtime: "An exception has been thrown during the rendering of a template ("[IRRELEVANT-ERROR-MESSAGE]").") in "[PROJECT-PATH]/partial/_header.html.twig" at line 49." at [PROJECT-PATH]/vendor/twig/twig/lib/Twig/Template.php line 396 {"exception":"[object] (Twig_Error_Runtime(code: 0): An exception has been thrown during the rendering of a template (\"[IRRELEVANT-ERROR-MESSAGE]\").\") in \"[PROJECT-PATH]/partial/_header.html.twig\" at line 49. at [PROJECT-PATH]/vendor/twig/twig/lib/Twig/Template.php:396, [IRRELEVANT-ERROR-MESSAGE]. at [PROJECT-PATH]/vendor/symfony/symfony/src/Symfony/Component/Translation/MessageSelector.php:81)"} []

因此,由于异常,它无法呈现标题,但它没有重定向到自定义错误页面,而是记录错误并且不显示任何内容。

当然,我修复了错误,现在它可以正常工作,但我想知道如何解决这个问题。我认为如果渲染的控制器行为不正常,Twig应该重定向到错误页面。

此外,我想知道为什么它之前循环,如果标题区域没有呈现任何内容?

Symfony版本:2.7.10

Twig:1.24.0

0 个答案:

没有答案