通过$ http加载的twig的转储输出无法折叠或展开

时间:2016-01-16 02:40:39

标签: angularjs http twig dump

我有一个简单的动作(在使用Twig 1.23.1的Symfony 2.8中),它呈现一个字符串:

/**
 * @Route("/test", name="my_test_route")
 *
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function testAction() {


    $returnContent = array(
        'message'=>'my message',
        'test' => array(
            'one' => 'one',
            'two' => 'two',
            'three' => 'three',
            'four' => 'four',
            'five' => 'five',
            'six' => 'six',
        )
    );

    return $this->render('MyBundle:message.html.twig', $returnContent);
}

模板只输出消息并转储测试数组:

{% extends 'MyBundle::layout.html.twig' %}

{% block body %}
    {{ dump(test) }}
    {{ message }}
{% endblock %}

上面的场景正在运行,我得到了预期的转储输出。

dump - a good version

然而,当我使用Angular的$ http服务从该动作获得输出时,即:

webServices.getData(ajaxUrl).then(function (response) {
    $scope[myvar] = $sce.trustAsHtml(response); 
});

服务如下:

app.factory('webServices',['$http', function($http){

    return {
        getData : function(ajaxUrl){

            return  $http.get(ajaxUrl).then(function(response) {

                return response.data;
            });
        }
    }
}]);

我仍然得到预期的输出,但转储输出不能再折叠或展开,而且总是会扩展。

 

dump - the broken version

显然,对于大量数据而言,这至少会造成不便。 我的问题是它是什么关于$ http服务(或我使用它的方式)从转储函数的输出中删除插入符?有什么方法可以解决这个问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在HTML上下文中,输出将无法正确转义。您可以在控制器中尝试addslashes(),但如果您打算在Twig模板中转储html,则必须使用<pre>标记。

来源:http://twig.sensiolabs.org/doc/functions/dump.html