SonataAdminBundle пользовательский рендеринг текстовых полей в списке - PullRequest
41 голосов
/ 04 января 2012

Я использую symfony2 и SonataAdminBundle.У меня есть простая сущность под названием Post, в которой у меня есть поле содержимого, в основном HTML-текст (от ckeditor для записи).Мне нужно отобразить в списке сообщений поле содержимого в виде необработанного HTML, не экранируя его.Взлом шаблона base_list_field, подобного этому

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

, работает, но это явно не правильный путь.Есть подсказки?

edit: решено!Я определил пользовательский тип HTML в config.yml для sonata_doctrine_orm_admin:

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')

Ответы [ 2 ]

24 голосов
/ 12 ноября 2012

Решение:

Я определил собственный тип html в config.yml для sonata_doctrine_orm_admin:

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 голосов
/ 26 декабря 2018

Я знаю, что это старый пост с принятым ответом, но теперь вы также можете использовать опцию safe , чтобы сказать Symfony, что не нужно очищать вывод.

$mapper->add('content', null, [
            'safe' => true,
        ]);
...