42

我正在使用 symfony2 和 SonataAdminBundle。我有一个名为 Post 的简单实体,其中的内容字段基本上是 html 文本(来自 ckeditor 的记录)。我需要在 Post 列表中将内容字段显示为原始 html,而不转义它。像这样破解 base_list_field 模板

{% block field %}{{ value|raw }}{% endblock %}

有效,但这显然不是正确的方法。

4

2 回答 2

26

解决方案:

我在 config.yml 中为 sonata_doctrine_orm_admin 定义了一个自定义 html 类型:

sonata_doctrine_orm_admin:
    templates:
      types:
        list:
          html: MyBundle:Default:list_html.html.twig

并创建了我不转义 HTML 的自定义 list_html.html.twig 模板:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field%}
    {{value|raw}}
{% endblock %}

现在在 PostAdmin 中,我可以在 configureListFields 方法中定义字段的行为:

$listMapper
    ->add('content', 'html')
于 2012-11-12T06:29:50.290 回答
0

我知道这是一个已被接受的旧帖子,但现在您也可以使用安全选项告诉 Symfony 不要清理输出。

$mapper->add('content', null, [
            'safe' => true,
        ]);
于 2018-12-26T10:28:40.193 回答