我有一个模板area.html.twig
,可以呈现另一个模板:
//area.html.twig
...
{% render 'Acme:User:restricted.html.twig' %}
...
有没有办法忽略\捕获restricted.html.twig
引发的异常而只是渲染任何内容?
答案 0 :(得分:7)
您应该在模板中使用embedded controllers:
{% render "yourBundle:Controller:action" with { 'data': data, } %}
最好通过路线(从symfony security update起):
{% render url('theactionroute', { 'data': data }) %}
在操作中,您可以检查您想要的任何内容,并在某些情况下返回空白的响应/模板。
您还可以将模板渲染包装在试用版中。 catch块并在树枝异常的情况下返回错误模板:
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()
));
}