Каков рекомендуемый способ удаления префиксов входных имен в форме Symfony

Скажем, у меня есть форма с именем myform с полем ввода с именем myinput. По умолчанию symfony генерирует виджет HTML, например:

<input name = "myform[myinput]" ... >

Это не работает с моими текущими javascripts, и вместо этого мне нужно получить следующее:

<input name = "myinput" ...>

Я довольно много поискал и нашел 2 способа добиться этого:

  • вернуть null в методе getBlockPrefix() в классе типа формы.
  • создайте форму с помощью FormFactoryInterface::createNamed() и передайте null в качестве имени.

Похоже, что первый метод не рекомендуется, поскольку он ограничивает возможность настройки рендеринга формы с использованием префиксных блоков.

2-й способ рекомендовали здесь и здесь.

Однако оба метода изменят имя формы на null, и в результате symfony сгенерирует такую ​​форму:

<form name = "" ...>

Вероятно, это потому, что form_div_layout.html.twig выглядит так:

<form name = "{{ name }}" ...

Что не подтверждается как HTML5.

Согласно эта страница, «это не ошибка».

Я знаю, что могу переопределить блок form_start в шаблоне и полностью удалить имя, но похоже, что форма не предназначена для использования с пустыми именами в целом (следовательно, нет проверки длины имени в шаблоне).

Итак, мой вопрос: каков рекомендуемый и совместимый с HTML5 способ удаления префиксов входных имен для форм Symfony?

JS - События опций формы
JS - События опций формы
В продолжение предыдущей статьи CSS - стили, связанные с вводом формы , в этой статье мы будем использовать JS для взаимодействия с формами, на этот...
CSS - Стили, связанные с вводом формы
CSS - Стили, связанные с вводом формы
Общими стилями ввода для форм являются Input (включая Text, Radio, checkbox), Select и Textarea, из которых Input относительно прост, поэтому в этой...
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Создание многостраничной формы заявления о приеме на работу с помощью Angular
Наличие на корпоративном сайте форм заявлений о приеме на работу, или "трудовых анкет", экономит время и деньги как для соискателей, так и для...
0
0
861
2

Ответы 2

  • Что касается PHP, я думаю, что любой вариант подходит.
  • Что касается Twig, я бы пошел на создание пользовательской формы тема и, при желании, применить его ко всем формам на сайте. Я думаю, что это Symfony путь рендеринга формы в соответствии с вашими конкретными потребностями (имя формы, допускающее значение NULL).

Это была ошибка отрисовки формы. Я отправил пул реквест в репозиторий Symfony, который был принят.

Пока изменение не будет выпущено, временным решением будет добавить этот код в вашу тему формы:

{# fix HTML5 validation of forms with null names #}
{% block form_start %}
    {% set name = name|default(block_prefixes.1) %}
    {{ parent() }}
{% endblock %}

Другие вопросы по теме