42 votes

SonataAdminBundle rendu personnalisé des champs de texte dans la liste

J'utilise symfony2 et SonataAdminBundle. J'ai une simple Entité appelée Post dans lequel j'ai le contenu du champ qui est essentiellement du texte html (à partir d'un ckeditor pour l'enregistrement). J'ai besoin d'afficher dans la liste des messages du champ contenu comme du html brut, sans s'y soustraire. Piratage base_list_field modèle comme celui-ci

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

fonctionne, mais c'est clairement pas la bonne façon. Tous les conseils?

edit: RÉSOLU! J'ai défini un code html personnalisé de type dans le fichier de configuration.yml pour sonata_doctrine_orm_admin:

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

Et a créé la coutume list_html.html.template twig dans lequel je ne suis pas échapper HTML:

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

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

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

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

26voto

Besnik Points 3167

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X