Symfony2 での Twig のエスケープに関する問題に遭遇しました。
問題
現在、Symfony のフォーム ビルダーを使用して、プロジェクトのカテゴリを管理するためのフォームを作成しています。フォームを作成するための現在のコードは次のとおりです。
$Form
->add('title', 'text', array('label' => 'Title', 'attr' => array('class' => 'span8')))
->add('parent', 'entity', array(
'label' => 'Category',
'attr' => array('class' => 'selectPicker span8'),
'property' => 'indentedTitle',
'empty_value' => ' -- New Category --',
'required' => false,
'class' => 'News\Entity\Category',
'query_builder' => function(EntityRepository $Repository) {
return $Repository->createQueryBuilder('c')
->orderBy('c.root, c.left');
}
))
->add('commit', 'submit', array('label' => 'Save', 'attr' => array('class' => 'btn btn-info')));
エンティティ "indentedTitle" に追加したコールバックは、ツリー セットのカテゴリ レベルに応じて、タイトルの前に 2 行追加するだけです。
public function getIndentedTitle() {
return str_repeat("--", $this->level) . $this->title;
}
HTMLコードを追加して、選択リストに出力したカテゴリ名を少し変更しようとすると、自動的にエスケープされることを除いて、これまでのところすべて正常に動作しています。たとえば、フォーム ビルダの「empty_value」キーの横に単純な タグを追加したことがわかります。その結果、選択リストの最初のオプションとして「 -- New Category --」が表示されます。
私が試したこと
Twig 自動エスケープ
{% autoescape false %} {{ form_row(form.parent) }} {% endautoescape %}
小枝の延長
渡したオブジェクトのセット全体をエスケープ(html_decode)するという単一の目的で、カスタムのTwig拡張機能を作成しようとしましたが、それでもうまくいきません。残念ながら、コードを保存してここに貼り付けなかったので、別のユーザーが私と同じ方法を提案したリンクを提供します (実際には JSON 用ですが、概念は同じです)。SO回答へのリンク
ですから、私の最終的な考えとして簡単に言えば、選択リストで「strong」や「 」などの HTML をエスケープせずに使用するには、どうすればよいですか?
前もって感謝します。