【发布时间】:2019-03-25 13:55:43
【问题描述】:
有没有办法使用 ajax 异步填充表单 ChoiceType(下拉菜单)?
基本上我想做的是:
简短说明:简单的预订系统。
详细说明:
当用户在“preferredDate”中使用日期选择器(或其他)选择日期时, ajax 调用将检查所选日期是否有可用的时间段,并用时间填充“availableTimes”ChoiceType(下拉列表)(例如: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 ... EDIT2:阅读所有旧的 SF2 答案,但所有这些都是关于使用事件发送表单 2 次以上..
EDIT3:来自 _profiler 的错误:
【问题讨论】: