webentwicklung-frage-antwort-db.com.de

Benutzerdefiniertes SonataAdminBundle-Rendering von Textfeldern in der Liste

Ich benutze symfony2 und SonataAdminBundle. Ich habe eine einfache Entität namens Post, in der ich ein Inhaltsfeld habe, das im Grunde HTML-Text ist (von einem CKeditor für den Datensatz). Ich muss das Inhaltsfeld in der Beitragsliste als unformatiertes HTML anzeigen, ohne es zu maskieren. Hacking base_list_field Vorlage wie folgt

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

funktioniert, aber es ist eindeutig nicht der richtige Weg. Irgendwelche Hinweise?

edit: Gelöst! Ich habe in der config.yml einen benutzerdefinierten HTML-Typ für sonata_doctrine_orm_admin definiert:

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

Und erstellte die benutzerdefinierte Vorlage list_html.html.twig, in der ich HTML nicht entkomme:

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

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

Jetzt kann ich im PostAdmin das Verhalten des Feldes in der configureListFields-Methode definieren:

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

Die Lösung:

Ich habe in der config.yml einen benutzerdefinierten HTML-Typ für sonata_doctrine_orm_admin definiert:

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

Und erstellte die benutzerdefinierte Vorlage list_html.html.twig, in der ich HTML nicht entkomme:

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

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

Jetzt kann ich im PostAdmin das Verhalten des Feldes in der configureListFields-Methode definieren:

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

Ich weiß, es ist ein alter Beitrag, der eine akzeptierte Antwort hat, aber jetzt können Sie auch die Option safe verwenden, um Symfony anzuweisen, die Ausgabe nicht zu bereinigen.

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