2017-02-11 120 views
0

我想验证请求的阵列,它是这样的:laravel阵列密钥验证规则

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

我要检查,如果管理员是真实的,什么也不做,传球,但如果管理员是假的,其他都是真实的或没有管理员在accountType对象验证抛出错误,如:无效的帐户类型。

另一个字我想检查是否有请求数组中的管理员通过验证,如果没有,并且还有其他类型显示错误,反之亦然。

这是我的验证,但它只是通过反正:

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

的'boolean'有效性规则不接受参数。 –

+0

@RossWilson所以你的建议,使其工作? –

回答

1

尝试

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

不工作,它通过了所有属性。我的意思是广告客户和其他角色会通过,我想抛出其他角色的错误,如果他们是真的 –

0

应该做的伎俩,从文档:他在确认字段必须能够浇铸成布尔值。接受的输入是true,false,1,0,“1”和“0”。

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

你没有完全读过这个问题?我想它会抛出错误,如果除了管理员以外的任何其他角色设置和他们的价值是真实的给我错误,这种方式它只是通过验证。 –

+0

您的权利,道歉,如果您只为了管理员,为什么不使用中间件? – Adam

+0

不要提到它,这个验证是为了更新用户角色。我在我的问题中说,它需要一段时间来检查是否只有管理员是真实的,反之亦然,如果它包含管理员抛出错误。但我的问题是它不检查,它只是通过,如果它是真的或假的。 –

0

你可以改变自己的价值观,以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

我会检查并让你知道 –

+0

它没有帮助,它给了我1个字符的错误是必需的。而我的请求由accountType.agency:true组成 –