【问题标题】:laravel array key validation rulelaravel 数组键校验规则
【发布时间】:2017-06-29 16:00:07
【问题描述】:

我想验证一个请求的数组,它是这样的:

  "accountType": {
    "admin" : true,
    "advertiser": true,
    "publisher": true,
    "agency": true
  },

我想检查 admin 是否为真,什么都不做并通过,但如果 admin 为假而其他人为真,或者 accountType 对象验证中没有 admin 则抛出错误,例如:无效的帐户类型。

换句话说,我想检查请求数组中是否有管理员通过验证,如果没有并且有其他类型显示错误,反之亦然。

这是我的验证,但它还是通过了:

 $validator = Validator::make($this->request->all(), [
            'accountType.admin' => 'boolean:true',
            'accountType.advertiser' => 'boolean:false',
            'accountType.publisher' => 'boolean:false',
            'accountType.agency' => 'boolean:false',
        ]);

【问题讨论】:

  • boolean 验证规则不接受参数。
  • @RossWilson 那么你有什么建议让它发挥作用?

标签: php arrays laravel validation laravel-5.3


【解决方案1】:

试试

$validator = Validator::make($this->request->all(), [
            'accountType.admin' => 'required|boolean:true',
            'accountType.advertiser' => 'boolean:false',
            'accountType.publisher' => 'boolean:false',
            'accountType.agency' => 'boolean:false',
        ]);

【讨论】:

  • 不工作,它通过了所有属性。我的意思是广告商和其他角色将通过,如果它们是真的,我想为其他角色抛出错误
【解决方案2】:

应该从文档中解决问题:验证中的字段必须能够转换为布尔值。接受的输入是真、假、1、0、“1”和“0”。

$validator = Validator::make($this->request->all(), [
    'accountType.admin' => 'boolean',
    'accountType.advertiser' => 'boolean',
    'accountType.publisher' => 'boolean',
    'accountType.agency' => 'boolean',
]);

【讨论】:

  • 您没有完整阅读这个问题?如果设置了除 admin 之外的任何其他角色并且它们的值为 true 时,我希望它抛出错误给我错误,这样它只会通过验证。
  • 你的权利,道歉,如果你只做管理员为什么不使用中间件?
  • 别提了,这个验证是为了更新用户角色。我在我的问题中说,它需要某个时候检查是否只有 admin 是 true ,反之亦然,如果它包含 admin throw 错误。但我的问题是它没有检查,它只是通过它是真还是假。
  • 我认为您可能必须制定自定义验证规则,否则无法解决
  • 我同意,我正在尝试创建一个。
【解决方案3】:

您可以将值更改为 1 表示真,0 表示假,然后验证如下:

$validator = Validator::make($this->request->all(), [
    'accountType.admin' => 'required|min:1',
    'accountType.advertiser' => 'required|min:1',
    'accountType.publisher' => 'required|min:1',
    'accountType.agency' => 'required|min:1',
]);

【讨论】:

  • 我会检查并通知您
  • 它没有帮助,它给了我需要 1 个字符的错误。而我的请求包括 accountType.agency:true
猜你喜欢
  • 2017-07-09
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 2015-04-02
  • 2019-07-25
  • 2020-12-23
  • 2020-09-06
  • 1970-01-01
相关资源
最近更新 更多