You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 6全局导航栏表单提交失效问题求助

解决Symfony导航栏表单提交无响应问题

问题根源

通过render(controller(...))渲染的导航栏表单,默认提交目标是当前页面的路由,而非searchForm方法对应的路由。提交表单时,请求发送到当前页面的控制器,searchForm作为子请求无法接收提交数据,导致判断表单提交与验证的代码逻辑不执行。

解决步骤

  1. 为searchForm方法添加专属路由
    在FrontController的searchForm方法上添加路由注解,指定唯一路由及允许的请求方法:
#[Route('/navbar-search', name: 'navbar_search', methods: ['GET', 'POST'])]
public function searchForm(Request $request): Response
{
    $searchForm = $this->createForm(NavbarFormType::class);
    $searchForm->handleRequest($request);

    if ($searchForm->isSubmitted() && $searchForm->isValid())
    {
        $data = $searchForm->getData();
        $search = $data['search'];
        return $this->redirectToRoute('search_results', [
            'search' => $search,
        ]);
    }

    return $this->render('front/search_form.html.twig', [
        'searchForm' => $searchForm,
    ]);
}
  1. 修改表单模板,指定提交路径
    在search_form.html.twig中,通过form_start的参数指定表单提交到上述路由:
{{ form_start(searchForm, {'action': path('navbar_search')}) }}
    {{ form_row(searchForm.search) }}
    {{ form_row(searchForm.submit) }}
{{ form_end(searchForm) }}

调整完成后,表单提交时会直接请求navbar_search路由,searchForm方法就能正常接收并处理表单数据,完成跳转逻辑。

内容的提问来源于stack exchange,提问作者seba66500

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 01:20:15