web-dev-qa-db-fra.com

SonataAdminBundle rendu personnalisé des champs de texte dans la liste

J'utilise symfony2 et SonataAdminBundle. J'ai une simple entité appelée Post dans laquelle j'ai un champ de contenu qui est fondamentalement du texte HTML (d'un ckeditor pour l'enregistrement). J'ai besoin d'afficher dans la liste des messages le champ de contenu en tant que fichier HTML brut, sans l'échapper. Pirater le modèle de base_list_field comme ceci

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

fonctionne, mais ce n'est clairement pas la bonne façon. Des allusions?

edit: RESOLU! J'ai défini un type HTML personnalisé dans le fichier config.yml pour sonata_doctrine_orm_admin:

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

Et créé le modèle personnalisé list_html.html.twig dans lequel je n'échappe pas au code HTML:

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

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

Maintenant dans PostAdmin, je peux définir le comportement du champ dans la méthode configureListFields:

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

La solution:

J'ai défini un type HTML personnalisé dans le fichier config.yml pour sonata_doctrine_orm_admin:

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

Et créé le modèle personnalisé list_html.html.twig dans lequel je n'échappe pas au code HTML:

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

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

Maintenant dans PostAdmin, je peux définir le comportement du champ dans la méthode configureListFields:

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

Je sais que c'est un ancien message qui a une réponse acceptée, mais vous pouvez également utiliser l'option safe pour indiquer à Symfony de ne pas purifier la sortie.

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