選択したオプションの中にハードスペース ( ) があります。どういうわけか、どこかで、彼らは逃げています。私が試してみました:
{% autoescape false %}
{{ form_widget(foobar) }}
{% endautoescape %}
としても
{{ form_widget(foobar)|raw }}
そして、以下の Twig の下にconfig.yml
autoescape: false
それでも、選択フィールドは Choice Text Here
ではなくとしてレンダリングされChoice Text Here
、ソースでは としてエンコードされています Choice Text Here
私が持っているコントローラで:
$form ->add('foo', 'choice', array(
'label' => 'Foo Label',
'choices' => $fooChoices,
'required' => true));
$form = $form->getForm();
$foobar = $form->createView();
私print_r
$fooChoices
が得た場合:
Array ( [1] => 60# FooBar [5] => 60# BatBar [11] => 60# DooWop )
これは私に適切なものを示しています
(60年代の前の二重スペースに注意してください)。FormBuilder とレンダリングの間のどこかで、エスケープされています。
Form Builder 内に組み込みのエスケープ機能はありますか?
私が推測したのは、フォームビューがデータを介し$form->createView()
てレンダリングされるという点では、まだエスケープされていないということです。しかし、form_widget 経由で Twig に到達するまでには、エスケープされています。することform_widget(foobar)|raw
はこれを示しています。
編集:回答として回避策を追加しましたが、最初のエスケープが完全に発生しないようにする方法を説明する回答を受け入れることにまだ興味があります。