laravel request->filled方法无法看到存在于请求数据中的参数

wgmfuz8q  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(137)

在web.php文件中,我有这样的路由:

  1. Route::get('/list/{list_id}/edit', [ListingController::class, 'edit']);

然后在ListingController中:

  1. public function edit(Request $request) {
  2. var_dump($request->list_id);
  3. var_dump($request->filled('list_id'));
  4. exit;
  5. }

如果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)。

nwsw7zdq

nwsw7zdq1#

如果你在路由中使用它作为参数,比如domain.com/list/20/edit,你需要在方法中指定它:

  1. public function edit(Request $request, int $list_id) {
  2. var_dump($list_id);
  3. exit;
  4. }

您也可以在这里省略Request,因为它不再使用:

  1. public function edit(int $list_id) {
  2. var_dump($list_id);
  3. exit;
  4. }

请参阅有关基本控制器的laravel文档中的示例

piv4azn7

piv4azn72#

这是因为filled()方法专门设计用于检查请求的输入数据中是否存在值,其中包括查询参数,表单数据和JSON数据,但不包括路由参数。
相反,您应该尝试使用has()方法,如下所示:

  1. $request->has('list_id')

相关问题