我对Symfony2和Javascript有点问题。
我有一个带有选择框的表单:
$builder
->add('town', 'entity', [
'class' => 'AppBundle:Towns',
'property' => 'id',
'placeholder' => 'Select an item',
'required' => true,
]);
当我点击城镇时,与所选城镇相关的税费必须显示在表单中,如复选框所示。
根据我的理解,我必须通过AJAX调用控制器并获取id的JSON和税收描述,不是吗?但是,我应该怎么做才能将这些信息添加到表单中?我如何拦截此选择框的“选定”事件?
当用户点击“发送”按钮时,我应该做些什么来将信息发送到服务器? AFAIK,Symfony2有一些机制可以避免发送不是由表单生成的数据,不是吗?
答案 0 :(得分:1)
您必须为表单构建器定义collection字段。
只需像这样添加;
$builder->add('taxes', 'collection', [
'type' => 'checkbox',
'options' => ['required' => true]
];
从您的观点中调用它:
{{ form_row(form.taxes) }} // or just use render all form field with form_widget(form)
然后,你必须写一些javascript来为你的收藏添加/删除税。
如果您想根据选定的城镇选择税款,那么;向控制器发出ajax请求,返回json / html数据,然后将其添加到您的表单中;
<input type="checkbox" name="taxes[]" value="your_tax_value" />