3

我有一个area.html.twig呈现另一个模板的模板:

//area.html.twig
...

{% render 'Acme:User:restricted.html.twig' %}

...

有没有办法忽略\捕获抛出的异常restricted.html.twig而只渲染什么?

4

1 回答 1

7

您应该在模板中使用嵌入式控制器:

{% 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()
                    ));
      }
于 2013-01-14T16:29:35.880 回答