为什么我的表单在使用 render_esi Symfony 6 时没有被提交

问题描述 投票:0回答:1

我正在 symfony 6 中为搜索功能制作一个控制器,然后使用“render_esi”方法从我的模板中调用它。 模板正在呈现表单,但是当我单击提交按钮时,除了刷新页面外没有任何反应。 这是控制器:

#[Route('/sav/search', name: 'app_sav_search', methods: ['GET'])]
    public function index(Request $request, ContratRepository $contratRepository): Response
    {
        $savSearch = new SAVSearch;
        $form = $this->createForm(SAVSearchType::class, $savSearch);

        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            dd('Hi');
        }

        return $this->render('sav_search/_search-form.html.twig', [
            'form' => $form->createView(),
        ]);
    }

我添加了 dd('hi') 只是为了测试是否正在提交表单,但事实并非如此。

这是我在我的模板上调用它的方式:

{{ render_esi(controller('App\\Controller\\SAVSearchController::index')) }}

我在其他地方的同一个项目中遇到了这个确切的问题,但我最终没有使用 render_esi。但是我需要在多个页面中使用搜索功能。

这也是我的表格:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('nom', TextType::class, [
                'required' => false,
                'label' => false,
                'attr' => [
                    'placeholder'   => 'Recherchez ici',
                    'class'         => 'form-control search-input mr-sm-2',
                    'aria-label'    => 'Search',
                    'autocomplete'  =>  'off',
                    'spellcheck'    =>  'false',
                ],
            ])
            ->add('submit', SubmitType::class, [
                'attr' => [
                    'class' => 'btn btn-outline-secondary',
                ]
            ])
        ;
    }

最后,表单模板:

{{ form_start(form, {'attr': {'class': 'row col p-2'}}) }}
    <div class="col">
        {{ form_row(form.nom) }}
    </div>
    <div class="col">
        {{ form_row(form.submit) }}
    </div>
{{ form_end(form) }}

我错过了什么吗?还是我应该使用另一种方法?我需要任何帮助

PS:正在发送请求,我可以在我的分析器中看到它。

forms symfony twig render edge-side-includes
1个回答
-1
投票

有两种可能。

  1. 你能在你的问题中提到实体

    SAVSearch
    字段吗?可能是字段不可为空,而您提交时没有任何价值?

  2. 在控制器路由中,也请允许

    POST
    方法。

提交表格后,请在分析器中检查表格验证或

Number of Errors
,以便您从那里得到更好的主意。

© www.soinside.com 2019 - 2024. All rights reserved.