Laravel 兄弟属性基础验证
Laravel sibling attribute base validation
我的负载中有一组属性,如下所示:
{
"courier_code" : "shipadelivery",
"rule" : [
{
"attribute" : "day",
"operator" : "eq",
"value" : "tue"
}
],
"is_active" : true,
"priority" : 2
}
这里我需要验证的是,如果属性是天,那么值应该在 ['mon','tue','wed','thu','fri','sat','sun']
中,运算符应该是 eq
我应该如何使用现有的属性参数进行验证。我已经对此进行了验证,而不是按照以下方式检查属性
$days = 'mon,tue,wed,thu,fri,sat,sun';
$rules = [
'courier_code' => 'required|exists:shipment_companies,code',
'is_active' => 'required|boolean',
'priority' => 'required|integer',
'rule' => 'required',
'rule.*.attribute' => 'required',
'rule.*.attribute' => 'required|in:'.$attributes,
'rule.*.value' => 'required',
'rule.*.operator' => 'required|in:'.$operators,
];
您可以使用条件将规则动态添加到规则数组
use Illuminate\Validation\Rule;
$rules = [
'courier_code' => 'required|exists:shipment_companies,code',
'is_active' => 'required|boolean',
'priority' => 'required|integer',
'rule' => 'required',
'rule.*.attribute' => 'required',
'rule.*.operator' => [
'required',
Rule::in($operators),
],
];
if($request->filled('key-to-check') && $request->input('key-to-check') == 'day'){
$rules['rule.*.value'] = 'required|in:'.implode(',', $attributes);
}
因为是一个数组你可以运行一个循环:
foreach($request->input('rule') as $key => $value){
$rule_key = 'rule.'.$key.'.value';
if($value['attribute'] == 'day'){
$rules[$rule_key] = 'required|in:'.$days;
}else{
$rules[$rule_key] = 'required';
}
}
希望对您有所帮助
我的负载中有一组属性,如下所示:
{
"courier_code" : "shipadelivery",
"rule" : [
{
"attribute" : "day",
"operator" : "eq",
"value" : "tue"
}
],
"is_active" : true,
"priority" : 2
}
这里我需要验证的是,如果属性是天,那么值应该在 ['mon','tue','wed','thu','fri','sat','sun']
中,运算符应该是 eq
我应该如何使用现有的属性参数进行验证。我已经对此进行了验证,而不是按照以下方式检查属性
$days = 'mon,tue,wed,thu,fri,sat,sun';
$rules = [
'courier_code' => 'required|exists:shipment_companies,code',
'is_active' => 'required|boolean',
'priority' => 'required|integer',
'rule' => 'required',
'rule.*.attribute' => 'required',
'rule.*.attribute' => 'required|in:'.$attributes,
'rule.*.value' => 'required',
'rule.*.operator' => 'required|in:'.$operators,
];
您可以使用条件将规则动态添加到规则数组
use Illuminate\Validation\Rule;
$rules = [
'courier_code' => 'required|exists:shipment_companies,code',
'is_active' => 'required|boolean',
'priority' => 'required|integer',
'rule' => 'required',
'rule.*.attribute' => 'required',
'rule.*.operator' => [
'required',
Rule::in($operators),
],
];
if($request->filled('key-to-check') && $request->input('key-to-check') == 'day'){
$rules['rule.*.value'] = 'required|in:'.implode(',', $attributes);
}
因为是一个数组你可以运行一个循环:
foreach($request->input('rule') as $key => $value){
$rule_key = 'rule.'.$key.'.value';
if($value['attribute'] == 'day'){
$rules[$rule_key] = 'required|in:'.$days;
}else{
$rules[$rule_key] = 'required';
}
}
希望对您有所帮助