即时补充表格
Supplement form on the fly
[设置]
- Symfony 3.4
- 包实体:[id, form_id, maretial_id, design_id]
- 表单实体:[id, form_name]
- Material 实体:[id, material_name, form_id]
- 设计实体:[id, design_name, material_id]
[问题]
我想知道如何使用来自 Ajax 请求的数据来补充表单。
在我的主窗体中,我只能 select select package form (form_id)
。
一旦它被 selected,通过 Ajax 请求,我将查找与 selected form
:[=14 兼容的每个 material 对象=]
表单我的控制器,我正在调用我的表单生成器:
FormMaterialsType.php
public function buildSupplementForm(FormBuilderInterface $builder, array $options) {
$builder
->add('material', EntityType::class, array(
'class' => 'AppBundle\Entity\Material',
'choice_label' => 'Material',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('m')
->where('m.form= :form');
->setParameters(array(
new Parameter('form', $options['form_id']),
))
},
'empty_data' => null,
'required' => true)
);
}
问题是我要填写完整的表格。我怎样才能只获得 select
集团?
你真正需要的是this
主要步骤是:
- 监听包裹 select 盒子上的更改事件
- 从 javascript
提交表格
- 在您的 FormType 中,您需要添加订阅者并监听 POST
您表单上的活动
- 在您的订阅者内部,您必须创建基于以下内容的功能
包中的 selection 查询正确的 materials
- 在您的 javascript 中完成所有这些之后,您加载新的 select 框
用新的替换它
Symfony Docs Example:
$("#material_select_box_id").replaceWith($(html).find('#material_select_box_id'));
现在您的 material select 框将加载来自订阅者的数据
[设置]
- Symfony 3.4
- 包实体:[id, form_id, maretial_id, design_id]
- 表单实体:[id, form_name]
- Material 实体:[id, material_name, form_id]
- 设计实体:[id, design_name, material_id]
[问题]
我想知道如何使用来自 Ajax 请求的数据来补充表单。
在我的主窗体中,我只能 select select package form (form_id)
。
一旦它被 selected,通过 Ajax 请求,我将查找与 selected form
:[=14 兼容的每个 material 对象=]
表单我的控制器,我正在调用我的表单生成器:
FormMaterialsType.php
public function buildSupplementForm(FormBuilderInterface $builder, array $options) {
$builder
->add('material', EntityType::class, array(
'class' => 'AppBundle\Entity\Material',
'choice_label' => 'Material',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('m')
->where('m.form= :form');
->setParameters(array(
new Parameter('form', $options['form_id']),
))
},
'empty_data' => null,
'required' => true)
);
}
问题是我要填写完整的表格。我怎样才能只获得 select
集团?
你真正需要的是this
主要步骤是:
- 监听包裹 select 盒子上的更改事件
- 从 javascript 提交表格
- 在您的 FormType 中,您需要添加订阅者并监听 POST 您表单上的活动
- 在您的订阅者内部,您必须创建基于以下内容的功能 包中的 selection 查询正确的 materials
- 在您的 javascript 中完成所有这些之后,您加载新的 select 框 用新的替换它
Symfony Docs Example:
$("#material_select_box_id").replaceWith($(html).find('#material_select_box_id'));
现在您的 material select 框将加载来自订阅者的数据