Symfony 6注册登录报错:不存在名为main的路由无法生成URL
问题根因
报错Unable to generate a URL for the named route "main" as such route does not exist的原因非常明确:你在登录/注册成功跳转的逻辑里,引用了名为main的路由,但你项目里根本不存在这个名称的路由。
从你执行symfony console debug:router返回的路由列表可以看到,你定义的首页路由名称是app_main,不是main。你之前把路由访问路径从/main修改为/,只是调整了路由的访问URL,没有修改代码里引用的路由名称,所以报错不会消失。
修复方法
- 打开你创建的
src/Security/UserAuthenticator.php文件,定位到onAuthenticationSuccess方法,找到生成跳转URL的代码:
把参数里的// 错误写法,引用了不存在的路由名main return new RedirectResponse($this->urlGenerator->generate('main'));'main'替换为实际存在的路由名'app_main'即可。 - 同步检查
config/packages/security.yaml配置文件,查找所有配置跳转目标的位置,如果有写路由名为main的配置(比如default_target_path: main),全部替换为app_main。 - 修改完成后执行命令清空项目缓存:
再测试注册、登录操作就不会触发这个报错了。symfony console cache:clear
注意:Symfony生成跳转URL时匹配的是路由定义里
name字段的值,和路由的访问路径(path)是完全独立的两个配置,修改path不会自动修正代码里错误的路由名引用。
内容的提问来源于stack exchange,提问作者user19401817
相关产品推荐
相关产品推荐

