【发布时间】:2020-04-20 20:33:08
【问题描述】:
我知道有一种方法可以扩展 validator 以创建自己的验证规则。但我不知道如何满足我的要求。
也许我的目标可以通过任何现有的验证规则来实现
我的场景:
我有三个角色;说role_id=1, role_id=2, role_id=2
我为所有角色设置了一个 basic registration 规则,并为其特定字段设置了另一个规则对象。我需要为所有有条件的人创建一个规则对象,这样我就不会在一个请求中单独验证每个规则(在用于注册所有角色的通用函数中)。
这是我的方法;
basic_registration : {
display_picture: 'required',
first_name: 'required',
last_name: 'required',
role_id: 'required',
phone_number: 'required|max:15',
email: 'required|email|unique:users,email',
address: 'required',
state: 'required',
city: 'required',
zip_code: 'required',
password: 'required',
password_confirmation: 'required_if:password|same:password',
},
role1_specific_registration_rules : {
specific_type_id: 'required',
other_picture: 'required'
},
role2_specific_registration_rules : {
discount_code: 'required',
notification: 'required',
},
role3_specific_registration_rules : {
vehicle_id: 'required',
make: 'required',
},
那我每次都为每条规则调用验证,有没有办法使用
email: 'not_required_when:role_id,1' // not required when role_id is 1
email: 'not_required_when:role_id,2' // not required when role_id is 2
email: 'not_required_when:role_id,1,3' // not required when role_id is 1 and 3
或任何使用方法(这似乎是正确的)
更新
email: 'required_when:role_id,1' // working fine with one value
email: 'required_when:role_id,1,2' // required when role_id is 1 **or** 2--this is only validating first value
或类似嵌套的东西
email: 'required_when:role_id:in:1,2' // nested indicative use
或者在 Laravel 中 required_if 接受数组值作为 here
email: 'required_if:role_id,1,2' // as in laravel
【问题讨论】:
标签: javascript node.js validation adonis.js