【问题标题】:Symfony - Forms or AJAXSymfony - 表单或 AJAX
【发布时间】:2019-03-04 09:49:04
【问题描述】:

我有 4 个实体,主实体名为“Jointure”,其他实体(Skill.php、Level.php、Answer.php)映射为 ManyToOne 到“Jointure”。 -Skill 包含所有可能的技能选择。 -Level 包含所有可能的级别选择。 -Answer 包含每个顾问的 userEmail。

我想创建一个具有以下条件的搜索页面:

更简单:我选择一个技能(能力),然后选择一个级别(Maitrise),然后单击“Recherche 顾问”并显示一个列表,其中包含所有“Answer.userEmail”。

我该怎么做?带有 createQueryBuilder 和自定义 Join 的表单?实体类型?使用 AJAX 吗?

非常感谢:)

【问题讨论】:

    标签: php ajax forms symfony


    【解决方案1】:

    嘿,如果我是你,我会为搜索表单创建一个包含 2 种实体类型的 formType,然后使用 Ajax 获取结果。

    SearchFormType.php:

     public function buildForm(FormBuilderInterface $builder, array $options){
        $builder->add(
                'skill',
                EntityType::class,
                [
                    'class' => Skill::class,
                ]
             )
              ->add(
                'skillLevel',
                EntityType::class,
                [
                    'class' => SkillLevel::class,
                ]
            );
        }
    

    然后使用 jquery 拦截提交并改为通过 Ajax 发送:

    app.js:

    $('#form').on('submit', (e) => {
        e.preventDefault();
        $.ajax({
            url: $form.attr('action'),
            type: 'POST',
            dataType: 'json',
            data: $form.serialize(),
            success: (response) => {
               //Display results in div       
            }
        })
    })
    

    最后在控制器中处理Ajax响应

    Controller.php:

    public function search(Request $request){
        if ($request->isXmlHttpRequest()) {
            $search = $this->createForm(SearchFormType::class);
            $form->handleRequest($request);
            if ($form->isSubmitted() && $form->isValid()) {
                $searchData = $form->getData();
                //Do what you want with the data and return a json response with the results
                return new JsonResponse([$results], 200);
            }
        } 
    }
    

    您必须添加查询数据库以获取结果的代码和错误处理才能完成。

    我可能错过了一些东西,所以如果你尝试这种方法但它不起作用,请不要犹豫发表评论,我会更深入地挖掘。

    【讨论】:

      猜你喜欢
      • 2021-04-06
      • 1970-01-01
      • 2017-12-03
      • 2018-10-30
      • 2017-02-19
      • 1970-01-01
      • 2017-10-20
      • 2017-08-25
      • 1970-01-01
      相关资源
      最近更新 更多