Symfony 6搜索表单功能异常:无法跳转至结果页面且无报错信息
Symfony 6搜索表单功能异常:无法跳转至结果页面且无报错信息
我来帮你排查这个问题,看了你的代码后,很快发现了几个关键问题,咱们一步步解决:
路由请求方法不匹配:这是最核心的问题!你的路由注解里只允许
GET方法,但Symfony创建的表单默认是用POST方式提交的。当你点击提交按钮时,浏览器发送的是POST请求,可你的路由不接受POST请求,这就导致请求根本没进入表单处理的逻辑分支,直接回到了表单页面,自然也不会有报错提示。你只需要修改路由的methods配置,让它同时支持GET和POST:
#[Route('/admin/actor/', name: 'app_actor_index', methods: ['GET', 'POST'])]表单渲染的小细节:另外要确认你的
buscar.html.twig模板里,表单是用Symfony的Twig表单函数正确渲染的,比如要包含form_start、form_end,还有提交按钮:{% extends 'base.html.twig' %} {% block body %} {{ form_start(form) }} {{ form_widget(form) }} <button type="submit">执行搜索</button> {{ form_end(form) }} {% endblock %}如果模板里没正确生成form标签或者提交按钮,也可能导致提交行为异常。
先把路由的问题改了,再测试一下,应该就能成功跳转到index1.html.twig看到“Hello”了。等跳转正常后,你再把注释掉的$actors = $actorRepository->searchactors($data);代码恢复,然后把数据传递给模板,比如:
return $this->render('actor/index1.html.twig', [ 'actors' => $actors ]);
这样就能在结果页展示搜索到的演员数据了。
备注:内容来源于stack exchange,提问作者Jorge H




