我有一个简单的动作(在使用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 %}
上面的场景正在运行,我得到了预期的转储输出。
然而,当我使用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;
});
}
}
}]);
我仍然得到预期的输出,但转储输出不能再折叠或展开,而且总是会扩展。
显然,对于大量数据而言,这至少会造成不便。 我的问题是它是什么关于$ http服务(或我使用它的方式)从转储函数的输出中删除插入符?有什么方法可以解决这个问题吗?
提前致谢。
答案 0 :(得分:0)
在HTML上下文中,输出将无法正确转义。您可以在控制器中尝试addslashes(),但如果您打算在Twig模板中转储html,则必须使用<pre>
标记。