Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception 忽略细枝模板中的异常_Exception_Symfony_Twig - Fatal编程技术网

Exception 忽略细枝模板中的异常

Exception 忽略细枝模板中的异常,exception,symfony,twig,Exception,Symfony,Twig,我有一个模板area.html.twig,用于呈现另一个模板: //area.html.twig ... {% render 'Acme:User:restricted.html.twig' %} ... {% render "yourBundle:Controller:action" with { 'data': data, } %} 是否有一种方法可以忽略\捕获由restricted.html.twig引发的异常,而只渲染任何内容?您应该在模板中使用: //area.html.twi

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

//area.html.twig
...

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

...
{% render "yourBundle:Controller:action" with { 'data': data, } %}
是否有一种方法可以忽略\捕获由
restricted.html.twig
引发的异常,而只渲染任何内容?

您应该在模板中使用:

//area.html.twig
...

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

...
{% render "yourBundle:Controller:action" with { 'data': data, } %}
最好使用路线(从开始)执行此操作:

在操作中,您可以检查所需内容,并在某些情况下返回空白响应/模板

您还可以将模板呈现包装在try&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()
                    ));
      }

很抱歉,没有办法在Twig中捕获异常。无论如何,您不应该在前端处理异常。你必须在行动中处理它。另外,您正在尝试渲染模板吗?您应该
呈现控制器的动作。你的意思是
包含
?我正在呈现控制器的动作。该操作仅呈现给一些用户,我希望该操作检查权限,并在用户无权查看时引发异常。我无法签入模板本身,因为它不仅仅是一个被授予的
检查。。我希望它抛出一个异常,因为它也用于其他形式(单机版、ajax等)。您是否考虑过实现自己的细枝过滤器或函数,并将所有需要的逻辑放在那里?但这只会进行双重检查(在细枝函数中,然后在操作中)。。创建我自己的try…catch标签复杂吗?