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]
  • 设计实体:[标识、设计名称、材料标识]
[问题]

我想知道如何用来自Ajax请求的数据补充表单

在我的主窗体中,我只能选择
包窗体(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'));