Laravel 5.5有条件地添加验证规则
Laravel 5.5 Conditionally adding validation rule
我有数据通过 AJAX post 传入,如下所示:
data:
0: {type: 'percent', amount: 10,…}
1: {type: 'percent', amount: 200,…}
如您所见,数组中的最后一项有问题。如果类型为百分比,并且数量超过 100,则验证应该失败。
我正在使用以下函数来验证请求:
public function validateRequest( $request ) {
$rules = [
'data.*.type' => 'required|alpha',
'data.*.amount' => 'required|min:1|int',
]
$messages = [...];
Validator::make($request->all(), $rules, $messages)->validate();
}
我一直在查看 Validation 页面,我认为我需要有条件地将 max:100
规则添加到该特定数组索引,但前提是该特定数组索引' type
是 percent
。我只是不确定如何完成。
提前致谢!
我通常会做这样简单的事情:
$rules = [
'data.*.type' => 'required|alpha',
'data.*.amount' => ['required', 'min:1', 'int'],
];
foreach ($request->input('data') as $key => $value)
{
if (array_get($value, 'type') == 'percent') {
$rules["data.{$key}.amount"][] = 'max:100';
}
}
请注意规则的数组语法而不是管道语法,这样可以更轻松地添加其他规则。
我有数据通过 AJAX post 传入,如下所示:
data:
0: {type: 'percent', amount: 10,…}
1: {type: 'percent', amount: 200,…}
如您所见,数组中的最后一项有问题。如果类型为百分比,并且数量超过 100,则验证应该失败。
我正在使用以下函数来验证请求:
public function validateRequest( $request ) {
$rules = [
'data.*.type' => 'required|alpha',
'data.*.amount' => 'required|min:1|int',
]
$messages = [...];
Validator::make($request->all(), $rules, $messages)->validate();
}
我一直在查看 Validation 页面,我认为我需要有条件地将 max:100
规则添加到该特定数组索引,但前提是该特定数组索引' type
是 percent
。我只是不确定如何完成。
提前致谢!
我通常会做这样简单的事情:
$rules = [
'data.*.type' => 'required|alpha',
'data.*.amount' => ['required', 'min:1', 'int'],
];
foreach ($request->input('data') as $key => $value)
{
if (array_get($value, 'type') == 'percent') {
$rules["data.{$key}.amount"][] = 'max:100';
}
}
请注意规则的数组语法而不是管道语法,这样可以更轻松地添加其他规则。