忽略Twig模板中的异常

tam*_*mir 3 exception symfony twig

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

//area.html.twig
...

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

...
Run Code Online (Sandbox Code Playgroud)

有没有办法忽略\捕获一个抛出的异常restricted.html.twig而只是渲染任何东西?

ivo*_*oba 7

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

{% render "yourBundle:Controller:action" with { 'data': data, } %}
Run Code Online (Sandbox Code Playgroud)

最好用路由(从symfony安全更新):

{% render url('theactionroute', { 'data': data }) %}
Run Code Online (Sandbox Code Playgroud)

在操作中,您可以检查您想要的任何内容,并在某些情况下返回空白响应/模板.

您还可以将模板渲染包装在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()
                    ));
      }
Run Code Online (Sandbox Code Playgroud)