【问题标题】:not_required_when validator in AdonisJsAdonisJs 中的 not_required_when 验证器
【发布时间】: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


    【解决方案1】:

    您使用两次 required_when 像这样

    email: 'required_when:role_id,1|required_when:role_id,2',
    

    所需的电子邮件是 role_id =1 或 role_id=2 这是我的情况

    【讨论】:

      【解决方案2】:

      你可以使用 required_when 如链接中所述 indicative required_when 或者您可以简单地在 hooks.js 中添加一个接受参数的自定义方法 只需从您的验证器类中调用此函数

      这里是条件要求的简单示例

      const conditionalNotRequired = async (data, field, message, args, get) => {
          if (field == "x" ){
            if((data["type"] == "x" && data["y"] != undefined)       {
              throw message 
            }
            else{
              return
            }
          } 
      }

      【讨论】:

      • required_when 未验证第二个参数。它只是验证第一个值并放开其他值
      • 在这种情况下,请尝试创建自定义验证器
      猜你喜欢
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 2022-01-04
      • 2019-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多