Laravel9表单提交报POST方法不支持路由错误排查解决
问题描述
Laravel开发初学者实现「上传图片+填写图片说明后提交」功能时,触发报错:The POST method is not supported for this route. Supported methods: GET, HEAD.
已尝试以下常规修复方案,均未解决问题:
- 在Blade模板的form表单标签内添加
@csrf指令 - 逐行检查路由文件中GET、POST请求方法定义的拼写与大小写,确认无书写错误
- 多次调整路由配置的请求方法类型
预期表单提交后跳转到左上角带有数据下拉组件的展示页面,实际始终触发上述报错。
问题根因
该问题由Laravel路由缓存未更新导致:如果之前执行过路由缓存生成命令,框架会直接读取缓存中的旧路由规则匹配请求,不会实时加载路由文件中修改后的新配置,就会出现代码中明明定义了POST路由,但框架只识别到对应路径的GET/HEAD方法的情况。
解决方案
直接在项目根目录执行以下命令清除路由缓存即可修复:
php artisan route:clear
补充:如果需要重新生成最新的路由缓存,可以后续执行
php artisan route:cache;本地开发阶段频繁调整路由时,不建议生成路由缓存,避免反复出现配置不生效的问题。
关联排查材料
排查过程中可参考以下文件/信息定位问题:
routes/web.php路由配置代码app/Http/Controllers/PostsController.php控制器代码app/Models/Post.php模型代码resources/views/posts/create.blade.php视图文件代码- 错误页面截图
- 项目目录结构截图
内容的提问来源于stack exchange,提问作者Blake
相关产品推荐
相关产品推荐

