在web.php文件中,我有这样的路由:
Route::get('/list/{list_id}/edit', [ListingController::class, 'edit']);
然后在ListingController中:
public function edit(Request $request) {
var_dump($request->list_id);
var_dump($request->filled('list_id'));
exit;
}
如果url是这样的:domain.com/list/20/edit
结果:string(2) "20" bool(false)
所以$request->list_id
存在,但$request->filled('list_id')
给出了n。这是什么原因呢?
(P.S.如果像往常一样传递参数,像?list_id=20
这样的GET参数,那么filled()方法会给出TRUE)。
2条答案
按热度按时间nwsw7zdq1#
如果你在路由中使用它作为参数,比如
domain.com/list/20/edit
,你需要在方法中指定它:您也可以在这里省略
Request
,因为它不再使用:请参阅有关基本控制器的laravel文档中的示例
piv4azn72#
这是因为
filled()
方法专门设计用于检查请求的输入数据中是否存在值,其中包括查询参数,表单数据和JSON数据,但不包括路由参数。相反,您应该尝试使用
has()
方法,如下所示: