在我的一些选择中,我有一个硬空格 ( )。不知何故,在某个地方,他们正在逃脱。我试过了:
{% 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->createView()
数据呈现表单视图的点仍然是未转义的。但是,当它通过 form_widget 到达 Twig 时,它已经被逃脱了。这样做form_widget(foobar)|raw
表明了这一点。
编辑:我添加了一个解决方法作为答案,但我仍然有兴趣接受一个解释如何防止完全发生初始转义的答案。