gpt4 book ai didi

laravel请求验证规则传递参数

转载 作者:行者123 更新时间:2023-12-02 00:02:04 25 4
gpt4 key购买 nike

我直接进入正题,我想知道是否可以在 Laravel 中的验证规则上传递参数。

这是我的代码:

我需要将 $product->id 传递给 ProductUpdateRequest 类。

我读过一些文章,但无济于事,无法将参数传递给其中。我的另一个解决方案是不使用验证规则类,而是使用 $request->validate[()] 直接在 Controller 上进行验证。由于我可以访问 Controller 上的 $product->id 我可以轻松地进行验证。但出于好奇,有没有办法让我在验证类上传递$product->id

Controller

public function update(ProductUpdateRequest $request, Product $product)
{
$request['detail'] = $request->description;
unset($request['description']);
$product->update($request->all());

return response([
'data' => new ProductResource($product)
], Response::HTTP_CREATED);
}

验证规则

public function rules()
{
return [
'name' => 'required|max:255|unique:products,name'.$product->id,
'description' => 'required',
'price' => 'required|numeric|max:500',
'stock' => 'required|max:6',
'discount' => 'required:max:2'
];
}

任何建议/答案/帮助将不胜感激。

最佳答案

您可以从请求中获取已解析的绑定(bind)

$product = $this->route('product');

在您的 rules 方法中,您可以使用上述方法获取产品实例。

public function rules()
{
$product = $this->route('product');
return [
'name' => 'required|max:255|unique:products,name'.$product->id,
'description' => 'required',
'price' => 'required|numeric|max:500',
'stock' => 'required|max:6',
'discount' => 'required:max:2'
];
}

当您使用此产品$product创建函数时(在大多数情况下使用资源路由时),它会起作用公共(public)功能更新(ProductUpdateRequest $request,产品$product){//代码放在这里}

但是如果你像下面这样,它就不会工作()公共(public)函数更新(ProductUpdateRequest $request,$id){//代码放在这里}

关于laravel请求验证规则传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49745483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com