在发送JSON POST请求时,如何知道“unqiue”验证规则何时中断?

时间:2018-04-27 23:28:59

标签: laravel

据我所知,当任何规则的验证失败时,Laravel将以422响应。

如果我只对某些规则失败感兴趣,比如“独特”? 由于“唯一”规则,如何检查某个输入字段是否未通过验证?

2 个答案:

答案 0 :(得分:0)

您仍然会收到所有验证错误,只要您发送正确的标题 - 您就是这样,否则您将无法获得422

然后以这种格式返回验证错误:

{
    errors: {
        field1: ["Field 1 must be unique", /* other failures */],
        // ... other fields
    },
    message: "The given data was invalid"
}

错误代码422是正确的(由Laravel的验证失败返回)并且表明实际上存在错误。

您只需在JavaScript中的响应对象上调用response.data即可访问返回的数据(至少使用Axios)。

答案 1 :(得分:0)

您可以轻松检查js代码中的返回json参数,但如果您想要自定义响应,则可以在验证laravel控制器中的字段时操作响应。

检查控制器中返回的失败规则数组中的特定规则:

if ($validator->fails()) {

   $failedRules = $validator->failed();

   if(isset($failedRules['email_address']['Unique'])) {

   ...

通过这种方式,您可以找到特定的失败(在此示例中,电子邮件地址必须是唯一的)并执行您自己的操作并返回响应。