У меня есть трудное пространство (
) внутри некоторых моих вариантов выбора. Как-то где-то они убегают. Я пробовал:Symfony2 Formbuilder автоматическое экранирование?
{% 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 и рендерингом он ускользает.
Есть ли встроенный выход из формы Builder?
То, что я определил, состоит в том, что через точку, в которой вид формы отображается через $form->createView()
, данные по-прежнему не отображаются. Но к тому времени, когда он достигнет Twig через form_widget, он был сбежал. Выполнение form_widget(foobar)|raw
показывает это.
Редактировать: Я добавил обходной путь в качестве ответа, но мне все еще интересно принять ответ, в котором объясняется, как предотвратить первоначальное экранирование от всего происходящего.
Могу ли я увидеть код виджета формы? Такой функции нет. – Lusitanian
@ Давид Я не уверен, что я следую. Я использую самый простой способ отображения формы в соответствии с документами: http://symfony.com/doc/current/book/forms.html#rendering-the-form – Nick
Я имею в виду класс, в котором вы создаете форма, извините за двусмысленность. – Lusitanian