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

Laravel如何在自定义Request中获取URL路由参数

解决方法

核心原因

你获取不到路由参数,90%的情况是路由定义的参数名和你调用route()时传入的参数名不匹配。


排查&解决步骤

  1. 先核对你的路由定义
    比如你访问的路径是example.com/users/20,对应的路由定义如果是:
// 这里路由参数名是 id
Route::put('/users/{id}', [UserController::class, 'update']);

那你可以直接用$this->route('id')获取参数值;如果路由定义的是/users/{user},那参数名是user,要改成$this->route('user')才能拿到。
如果是用了路由模型绑定,$this->route('user')会直接返回对应的User模型实例,要拿id可以写$this->route('user')->id。

  1. 你之前尝试的写法无效的原因:
  • $this->id:FormRequest默认不会自动把路由参数挂载为类属性,所以返回null
  • $this->input('id'):这个方法只能获取请求体、URL查询字符串里的参数,拿不到路由路径里的参数
  • 兜底获取写法:如果还是拿不到,可以用全局请求助手获取所有路由参数确认:
// 打印所有路由参数,确认你要的参数键名
dd(request()->route()->parameters());

正确代码示例

public function rules()
{
    // 替换成你路由里实际定义的参数名即可
    $userId = $this->route('id');
    return [
        'name' => 'required|min:2',
        'email' => 'required|email|unique:users,email,' . $userId,
        'password' => 'nullable|min:4'
    ];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:15:03