Laravel 5.2路由混淆问题:表单提交未触发POST路由
问题分析与解决方案
你遇到的核心问题是表单的method="POST"属性放错了位置——你把它加到了<div class="form-group">标签上,而不是<form>标签本身!浏览器默认会用GET方法提交表单,所以才会把数据拼在URL里,误调用到/chefpage/{chefid}这条GET路由。
接下来给你一步步修正的方法:
修正表单标签的属性
把method="POST"和action="/addreview"都移到<form>标签上,而不是内部的div。示例代码如下:<form method="POST" action="/addreview"> <div class="form-group"> <!-- 你的表单输入项,比如评价内容、评分等 --> <input type="text" name="review_content" class="form-control"> <!-- 其他表单元素 --> </div> <button type="submit" class="btn btn-primary">提交评价</button> </form>添加Laravel必需的CSRF令牌
Laravel默认会验证POST请求的CSRF令牌,没有的话会直接返回419错误。你需要在表单里添加令牌字段,推荐用Blade指令快速实现:<form method="POST" action="/addreview"> @csrf <div class="form-group"> <!-- 表单内容 --> </div> </form>也可以手动添加隐藏字段:
<input type="hidden" name="_token" value="{{ csrf_token() }}">验证路由配置
确保你的POST路由Route::post('/addreview', 'HomeController@addreview');已经正确注册在routes/web.php里,没有拼写错误。
做完这些调整后,表单提交时就会正确发送POST请求到/addreview路由,而不是走GET的/chefpage/{chefid}了。如果还有问题,可以打开浏览器开发者工具的Network面板,查看请求的方法和URL是否符合预期。
内容的提问来源于stack exchange,提问作者Ark
相关产品推荐
相关产品推荐

