Twig中的{{exception.message}}不呈现HTML

时间:2015-03-26 11:38:38

标签: php html symfony twig

我有这个控制器,\Exception被引发(我还没有弄清楚在某些条件下使用哪个SF2 Exception)。这是它:

<?php

namespace My\AppBundle\Controller;

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.twig

{% extends '::base.html.twig' %}

{% block body %}
    <h2>Error</h2>
    <p>{{ exception.message }}</p>
{% endblock %}

问题是在prod environement中查看错误页面时未呈现HTML。

我尝试了{{ exception.message|raw }}并根据this answerautoescape设置为false,但似乎没有效果。

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

1 个答案:

答案 0 :(得分:0)

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

$vars = [];
try {

    $a->indexAction();
    //fill $vars 


} catch (Exception $e) {
  $vars['exception'] = $e;
}

//pass $vars to twig