Symfony2とSonataAdminBundleを使用しています。 Postという単純なエンティティがあります。このエンティティには、基本的にhtmlテキスト(レコードのckeditorから)であるコンテンツフィールドがあります。投稿リストにコンテンツフィールドをエスケープせずに生のhtmlとして表示する必要があります。このようにbase_list_fieldテンプレートをハッキングする
{% block field %}{{ value|raw }}{% endblock %}
動作しますが、それは明らかに適切な方法ではありません。ヒントはありますか?
編集:解決しました! sonata_doctrine_orm_adminのconfig.ymlでカスタムhtmlタイプを定義しました:
sonata_doctrine_orm_admin:
templates:
types:
list:
html: MyBundle:Default:list_html.html.twig
そして、HTMLをエスケープしないカスタムlist_html.html.twigテンプレートを作成しました。
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{{value|raw}}
{% endblock %}
これで、PostAdminで、configureListFieldsメソッドのフィールドの動作を定義できます。
$listMapper
->add('content', 'html')
ソリューション:
Sonata_doctrine_orm_adminのconfig.ymlでカスタムhtmlタイプを定義しました:
sonata_doctrine_orm_admin:
templates:
types:
list:
html: MyBundle:Default:list_html.html.twig
そして、HTMLをエスケープしないカスタムlist_html.html.twigテンプレートを作成しました。
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{{value|raw}}
{% endblock %}
これで、PostAdminで、configureListFieldsメソッドのフィールドの動作を定義できます。
$listMapper
->add('content', 'html')
回答が受け入れられた古い投稿であることはわかっていますが、safeオプションを使用して、出力をサニタイズしないようにSymfonyに指示することもできます。
$mapper->add('content', null, [
'safe' => true,
]);