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

Laravel中如何在UpdatePointRequest请求文件内获取更新请求ID?

解决Laravel请求文件中获取路由ID的问题

你遇到的情况是因为URL中的ID属于路由参数,并不在请求的表单/查询参数集合里,所以用$this->request或request()->all()拿不到。结合你控制器里用了路由模型绑定(Point $point),可以通过以下几种方式在UpdatePointRequest中获取ID:

方法1:通过路由获取绑定的模型实例

直接从路由中取出已绑定的Point模型,再获取其ID:

public function rules(): array
{
    // 获取路由绑定的Point模型
    $point = $this->route('point');
    $pointId = $point->id;

    $validationRulesArray = [
        'title' => [
            'required',
            'string',
            'max:255',
            Rule::unique($pointTable)->ignore($pointId),
        ],
        // 其他规则...
    ];
    // ...
}

这里的point是路由参数名,对应你路由定义中的{point}(比如Route::put('/api/points/{point}', [PointController::class, 'update']))。

方法2:直接获取路由参数值

如果你的路由定义是用{id}而非模型绑定(比如Route::put('/api/points/{id}', ...)),可以直接取参数值:

$pointId = $this->route('id');

补充说明

Laravel的FormRequest继承自Request,所以可以直接调用route()方法访问路由参数。路由模型绑定会自动将URL中的参数转化为对应的模型实例,所以用方法1可以直接拿到完整模型,不仅限于ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:05:09