You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中路由参数无法被request->filled()检测的原因咨询

问题原因解析

这是因为Laravel里路由参数和请求输入数据是完全独立的两个存储体系:

  • 你通过/list/{list_id}/edit定义的list_id属于路由参数,它被存在路由匹配的结果容器里,并不在请求的输入集合(包含GET查询参数、POST表单数据、JSON请求体等)中。
  • $request->list_id能拿到值,是因为Laravel的Request类有__get魔术方法,它会先从路由参数里查找对应字段,找不到再去输入数据里找。
  • 而$request->filled('list_id')的作用是检查请求输入集合里是否存在该字段,且值不为空字符串、null或空白字符。路由参数不在这个集合里,所以返回false。
  • 当用?list_id=20传递参数时,这个参数属于GET查询参数,会被纳入请求输入集合,所以filled()能检测到,返回true。

如果要验证路由参数是否存在且有效,直接用$request->route('list_id')判断是否非空,或者用Route::current()->hasParameter('list_id')来检查。

内容的提问来源于stack exchange,提问作者Oto Shavadze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 14:43:13