我遇到了嵌套条件验证规则的问题.
class StoreRequest extends Request
{
public function authorize(){
return true;
}
public function rules(){
return [
'type_id' => 'required|integer',
'external_id' => 'required_if:type_id,==,3|integer',
];
}
}
的确,我想:
– 仅当type_id等于3时才检查external_id
– 并检查它是否是整数.
当我发布表单时,当我选择一个等于3的type_id时,规则会起作用.
但是,如果我选择另一个type_id,如1或2,则验证不会通过:
The external_id must be an integer.
我尝试添加可空的条件,但required_if不再起作用
你有什么想法吗?
解决方法:
您的规则执行两个彼此独立的检查;只是因为type_id!= 3时不需要external_id字段,并不意味着忽略整数检查.
您正在寻找的是conditional rule,它可以更好地控制何时执行检查,例如:
$validator = Validator::make($data, [
'type_id' => 'required|integer'