laravel 请求验证规则传递参数
laravel request validation rules pass parameter
这里开门见山,我想知道是否可以在Laravel.
中的validation rule
上传递参数
这是我的代码:
我需要将 $product->id
传递给 ProductUpdateRequest
class。
我已经阅读了一些文章,但无济于事,无法将参数传递给它。我的另一个解决方案是不使用验证规则 class 并使用 $request->validate[()]
直接在控制器上进行验证。因为我可以访问控制器上的 $product->id
,所以我可以轻松地进行验证。但出于好奇,我有办法在 validation class
上传递 $product->id
吗?
控制器
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'
];
}
任何 suggestions/answers/help 将不胜感激。
您可以从请求中获取已解析的绑定
$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'
];
}
这就是我在更新时验证唯一产品名称的方式。我将产品 ID 作为路由参数传递,使用 unique
验证规则来验证产品 name 在数据库中不存在 except 此产品 (id)。
class ProductController extends Controller {
public function update(Request $request, $id) {
$this->validate($request, [
'name' => 'required|max:255|unique:products,name'.$id,
]);
// ...
}
}
对于验证规则中的自定义请求,您可以将您的
查看 :
<input type="hidden" value="product_id">
在验证请求中:
public function rules()
{
$product_id = $this->request->get('product_id');
return [
//
];
}
这里开门见山,我想知道是否可以在Laravel.
中的validation rule
上传递参数
这是我的代码:
我需要将 $product->id
传递给 ProductUpdateRequest
class。
我已经阅读了一些文章,但无济于事,无法将参数传递给它。我的另一个解决方案是不使用验证规则 class 并使用 $request->validate[()]
直接在控制器上进行验证。因为我可以访问控制器上的 $product->id
,所以我可以轻松地进行验证。但出于好奇,我有办法在 validation class
上传递 $product->id
吗?
控制器
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'
];
}
任何 suggestions/answers/help 将不胜感激。
您可以从请求中获取已解析的绑定
$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'
];
}
这就是我在更新时验证唯一产品名称的方式。我将产品 ID 作为路由参数传递,使用 unique
验证规则来验证产品 name 在数据库中不存在 except 此产品 (id)。
class ProductController extends Controller {
public function update(Request $request, $id) {
$this->validate($request, [
'name' => 'required|max:255|unique:products,name'.$id,
]);
// ...
}
}
对于验证规则中的自定义请求,您可以将您的 查看 :
<input type="hidden" value="product_id">
在验证请求中:
public function rules()
{
$product_id = $this->request->get('product_id');
return [
//
];
}