Symfony2 - настройка функции form_start в twig

Помощники формы form_start и form_end полезны в twig:

{{ form_start(form) }}
{{ form_end(form) }}

Я могу настроить некоторые параметры, такие как method или action. Но мне нужно настроить другие параметры, такие как class или добавить form-enctype.

Могу ли я это сделать? Должен ли я установить его в FormType.php?

С этого момента я просто пытаюсь добавить свое настроенное значение в функцию twig, как показано ниже:

{{ form_start(form, {'class': 'myclass', 'action': 'myaction'}) }}
// fields...
{{ form_end(form, {'render_rest': true}) }}

Но в этом случае, например, class не появляется.


person Roberto Rizzi    schedule 16.09.2013    source источник


Ответы (1)


Поскольку form_start имеет следующую подпись ,

form_start(view, variables)

И поскольку class не представляет собой допустимое имя переменной. Вам нужно указать свой класс как массив key/value, используя атрибут attr.

Тогда попробуйте...

{{ form_start(form, {'action': 'myaction', 'attr': {'class': 'your_class_name'}}) }}

Также...

  • Вы должны быть уверены, что ваши поля Type правильно определены, чтобы позволить помощнику form_start установить правильный form-enctype.

  • Помощник form_enctype(formView) устарел, начиная с Symfony 2.3.

person Ahmed Siouani    schedule 16.09.2013
comment
Большое спасибо! Это решение работает отлично. Затем мне не нужно использовать form-enctype также независимо от того, загружаю ли я файлы, потому что form_start() автоматически устанавливает «form-enctype». Это правильно? Однако в тегах формы я этого не вижу. - person Roberto Rizzi; 16.09.2013
comment
Почему class дублируется в массиве variables? - person A.L; 06.02.2015
comment
Предлагаемый фрагмент кода противоречит вашему объяснению, поскольку вы указали class в качестве переменной! - person Pmpr; 09.11.2016
comment
Должно быть {{ form_start(form, {'attr': {'class': 'your-class'} }) }} - person dotoree; 07.06.2018
comment
то же самое верно для id. Он также должен находиться в массиве attr. - person mcmurphy; 19.07.2018