【问题标题】:{{ exception.message }} in Twig doesn't render HTMLTwig 中的 {{ exception.message }} 不呈现 HTML
【发布时间】:2015-03-26 11:38:37
【问题描述】:

我有这个控制器,在某些条件下,\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环境中看到错误页面时没有呈现HTML。

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

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

【问题讨论】:

    标签: php html symfony twig


    【解决方案1】:

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

    $vars = [];
    try {
    
        $a->indexAction();
        //fill $vars 
    
    
    } catch (Exception $e) {
      $vars['exception'] = $e;
    }
    
    //pass $vars to twig
    

    【讨论】:

    • 感谢@exussum 回答我的问题,但我没有得到它的一切。我找不到\Exception的地方。 \Exception 在满足条件并且 Symfony 显示 error.html.twig 视图时被抛出。在这个视图中,我无法呈现 HTML。
    • 它似乎是自动的。
    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多