Есть ли способ заполнить форму ChoiceType (раскрывающийся список) асинхронно с помощью ajax?
В основном то, что я пытаюсь сделать:
Краткое описание: Простая система бронирования.
Длинное описание:
Когда пользователь выбирает дату с помощью средства выбора даты (или чего-либо еще) в «предпочитаемом виде»
ajax call проверит, есть ли доступный временной интервал для выбранной даты, и заполнит ChoiceType «availableTimes» (выпадающий список) временем (например: 10:00, 10:30, 11:00, 11:30 и т. д.) .
Доступное время отсутствует в базе данных.
Моя форма:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('preferredDate', DateType::class, [
'widget' => 'single_text',
'input' => 'datetime',
'format' => 'dd.MM.yyyy',
])
->add('availableTimes', ChoiceType::class, ['required' => false]);
}
Мой JS:
$(".reservation-date").change(function () {
$.ajax({
type: "GET",
dataType: "json",
url: "{{URL}}",
data: {},
success: function (data) {
$(".reservation-times").empty();
$.each(data, function (key, value) {
//populate availabletimes dropdown
let disabled = (value.disabled === true ? "disabled" : '');
$(".reservation-times").append('<option ' + disabled + ' value=' + value.time + '>' + value.time + '</option>');
})
}
,
error: function (error) {
console.log(error);
}
});
})
Это работает, когда я отправляю выбранное время. Выдает ошибку "Это значение недопустимо"
Что я делаю не так?
Как бы вы сделали это по-другому?
РЕДАКТИРОВАТЬ: нет проверки набора, но по какой-то причине он все еще хочет проверить этот ChoiceType ...
РЕДАКТИРОВАТЬ 2: Прочитать все старые ответы SF2, но все они о отправке формы 2+ раз, используя события ..
EDIT3: ошибки от _profiler: