SonataAdminBundle custom rendering of text fields in list

giorrrgio picture giorrrgio · Jan 4, 2012 · Viewed 10.4k times · Source

I'm using symfony2 and SonataAdminBundle. I have a simple Entity called Post in which I have content field that is basically html text (from a ckeditor for the record). I need to display in the Post list the content field as raw html, without escaping it. Hacking base_list_field template like this

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

works, but it's clearly not the proper way. Any hints?

edit: SOLVED! I've defined a custom html type in the config.yml for sonata_doctrine_orm_admin:

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

And created the custom list_html.html.twig template in which i do not escape HTML:

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

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

Now in the PostAdmin I can define the behaviour of the field in the configureListFields method:

$listMapper
    ->add('content', 'html')

Answer

Besnik picture Besnik · Nov 12, 2012

The solution:

I've defined a custom html type in the config.yml for sonata_doctrine_orm_admin:

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

And created the custom list_html.html.twig template in which i do not escape HTML:

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

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

Now in the PostAdmin I can define the behaviour of the field in the configureListFields method:

$listMapper
    ->add('content', 'html')