Нам нужно добавить «повторяющиеся поля» в форму на основе ввода, предоставленного в текстовом поле. Обычно мы используем кнопку «добавить еще», чтобы отслеживать количество полей, отображаемых в построитьформу()
и обновите этот номер в обратном вызове отправки на кнопке.
Однако функциональность, которую мы хотим, не такова. Нам нужно, чтобы когда кто-то вводит текст в текстовое поле (кроме пустого), под ним добавлялась дополнительная группа полей. Мы позволяем людям сканировать штрих-коды, и каждый раз, когда они сканируют штрих-код в текстовое поле, мы хотим, чтобы он создавал еще одну группу полей, чтобы они могли сканировать другой элемент, если захотят.
Мы попытались использовать #представить
в текстовом поле, но #submit не срабатывает в текстовом поле, так как мы добавили оператор печати, а также $ форма-состояние-> установить ()
туда и попытайтесь распечатать $form_state->получить()
на форме безрезультатно.
Поскольку вы не можете обновить form_state внутри обратного вызова ajax, мы не можем найти способ добиться того, что мы хотим сделать (добавить еще одну группу полей после ввода текста в текстовое поле).
Есть ли другой способ сделать это?
(Мы разрешаем добавлять только 10 групп на каждую отправку, поэтому в качестве «обходного пути» мы динамически добавляем 10 групп в buildForm, а затем используем #состояния
чтобы скрыть каждое из них, если предыдущее текстовое поле не содержит данных, но это не позволяет нам добавлять кнопку «удалить» для каждого текстового поля, чтобы пользователь мог удалить текстовые поля, которые он не хочет использовать.)