我有一个area.html.twig
呈现另一个模板的模板:
//area.html.twig
...
{% render 'Acme:User:restricted.html.twig' %}
...
有没有办法忽略\捕获抛出的异常restricted.html.twig
而只渲染什么?
您应该在模板中使用嵌入式控制器:
{% render "yourBundle:Controller:action" with { 'data': data, } %}
最好使用路由(从symfony 安全更新开始):
{% render url('theactionroute', { 'data': data }) %}
在操作中,您可以检查您想要的任何内容,并在某些情况下返回空白响应/模板。
您还可以将模板渲染包装在 try & catch 块中,并在发生 twig 异常时返回错误模板:
try {
$response = $this->render('yourBundle:Default:action.html.twig',
array('data' => $data));
} catch (\Exception $exc) {
return $this->render('yourBundle:Default:error.html.twig', array(
'message' => $exc->getMessage()
));
}