Laravel带参数POST路由表单请求报错问题咨询
解决Laravel表单POST请求带URL参数的报错问题
嘿,我一眼就发现你代码里的关键问题啦!咱们一步步来排查:
1. 路由参数的语法错误
你的web.php里路由参数写了{$id},这是不符合Laravel路由规则的——路由占位符不需要加美元符号$,Laravel会自动把占位符对应的值传递给闭包/控制器方法的参数。
错误的路由代码:
Route::post('/products/{$id}', function($id){ return $id; });
修正后的路由代码:
Route::post('/products/{id}', function($id){ return $id; });
这个错误会导致Laravel把{$id}当作URL的字面量部分,而不是可匹配的参数,所以你的表单请求根本找不到对应的路由,自然会报错。
2. 额外检查点
除了路由的问题,你还可以确认这两点:
- 确保Blade模板里的
$produit->id是有有效值的,比如不是null或者空值,否则表单的action会变成/products/,同样匹配不到路由。 - 确认
csrf_field()正常输出了CSRF令牌(可以查看页面源码,看是否有<input type="hidden" name="_token" value="xxx">),缺少CSRF令牌也会导致POST请求被Laravel的CSRF保护拦截报错。
修正路由之后,你的表单代码是没问题的,应该就能正常发起请求并获取到id参数啦!
内容的提问来源于stack exchange,提问作者Barbell
相关产品推荐
相关产品推荐

