我有一个包含多个布局的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