我正在使用symfony2和SonataAdminBundle。 我有一个名为Post的简单实体,其中我的内容字段基本上是html文本(来自记录的ckeditor)。我需要在Post列表中将内容字段显示为原始html,而不是转义它。 像这样黑客攻击base_list_field模板
{% block field %}{{ value|raw }}{% endblock %}
有效,但显然不是正确的方法。 任何提示?
编辑:已解决!我在config.yml中为sonata_doctrine_orm_admin定义了一个自定义html类型:
sonata_doctrine_orm_admin:
templates:
types:
list:
html: MyBundle:Default:list_html.html.twig
并创建了自定义list_html.html.twig模板,其中我不会转义HTML:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{{value|raw}}
{% endblock %}
现在在PostAdmin中我可以在configureListFields方法中定义字段的行为:
$listMapper
->add('content', 'html')
答案 0 :(得分:24)
解决方案:
我在config.yml中为sonata_doctrine_orm_admin定义了一个自定义html类型:
sonata_doctrine_orm_admin:
templates:
types:
list:
html: MyBundle:Default:list_html.html.twig
并创建了自定义list_html.html.twig模板,其中我不会转义HTML:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{{value|raw}}
{% endblock %}
现在在PostAdmin中我可以在configureListFields方法中定义字段的行为:
$listMapper
->add('content', 'html')
答案 1 :(得分:0)
我知道这是一则旧文章,答案已经被接受,但是现在您也可以使用 safe 选项来告诉Symfony不要对输出内容进行消毒。
$mapper->add('content', null, [
'safe' => true,
]);