Php 即时补充表格
[设置]Php 即时补充表格,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,[设置] Symfony 3.4 包实体:[id,form\u id,maretial\u id,design\u id] 表单实体:[id,表单名称] 物料实体:[id,物料名称,表格id] 设计实体:[标识、设计名称、材料标识] [问题] 我想知道如何用来自Ajax请求的数据补充表单 在我的主窗体中,我只能选择包窗体(form\u id)。 一旦选择了它,通过Ajax请求,我将查找与所选表单兼容的所有材质对象: 从我的控制器中,我正在调用我的表单生成器: FormMaterialsTyp
- Symfony 3.4
- 包实体:[id,form\u id,maretial\u id,design\u id]
- 表单实体:[id,表单名称]
- 物料实体:[id,物料名称,表格id]
- 设计实体:[标识、设计名称、材料标识]
包窗体(form\u id)
。
一旦选择了它,通过Ajax请求,我将查找与所选表单兼容的所有材质对象
:
从我的控制器中,我正在调用我的表单生成器:
FormMaterialsType.php
问题是我得到了一份完整的表格。我如何才能只获得
选择集团?您真正需要的是
主要步骤是:
- 侦听程序包选择框上的更改事件
- 从javascript提交表单
- 在FormType中,您需要添加订阅者并收听帖子
表格上的事件
- 在订阅服务器内部,您必须创建基于
要查询正确物料的包中的选择
- 在javascript中完成所有这些之后,您将加载新的选择框
把它换成新的
Symfony文档示例:
因此,现在您的材料选择框将加载来自订阅者的数据如果我理解正确,您希望从选择框中选择一个包并将数据动态填充到材料选择框中,对吗?是的,一旦为包选择了表单
实体,我就必须选择材料,这将被添加到当前的HTML表单中。这有点棘手,所以我只能给你一些步骤,但是检查文档,你会没事的。在你更熟悉这个例程之后,你会看到它的全部功能:DThanks,我会尽快尝试这个
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)
);
}
$("#material_select_box_id").replaceWith($(html).find('#material_select_box_id'));