{{ exception.message }} in Twig 不渲染 HTML



我有一个控制器,在特定条件下,Exception会被引发(我还没有弄清楚要使用哪个SF2 Exception)。给你:

<?php
namespace MyAppBundleController;
use ....
class MyController extends Controller
{
     const EXCEPTION_MESSAGE = <<<EOF
My <b>HTML</b>
<br/>
<small>Small phrase</small>
EOF;
     public function indexAction()
     {
         // my logic
         if(in_array($data, $array))
             throw new Exception(self::EXCEPTION_MESSAGE);
         // the rest of my logic
         return ....
     }
}

app/Resources/TwigBundle/views/Exception/error.html.trick

{% extends '::base.html.twig' %}
{% block body %}
    <h2>Error</h2>
    <p>{{ exception.message }}</p>
{% endblock %}

问题是当在prod环境中看到错误页面时,HTML没有被呈现。

我尝试了{{ exception.message|raw }},并根据这个答案将autoescape设置为false,但似乎没有效果。

在Twig中显示Exception消息时,如何使HTML工作?

在代码中捕获异常的位置是需要将其添加到传递给trick的数组中的位置。例如

$vars = [];
try {
    $a->indexAction();
    //fill $vars 

} catch (Exception $e) {
  $vars['exception'] = $e;
}
//pass $vars to twig

最新更新