如果且仅当所有属性都失败时,如何在Laravel Validation中编写if条件来执行

时间:2015-09-27 02:15:49

标签: validation laravel

我想将用户重定向到另一个页面,如果他将重复数据输入到5个属性(如果仅重复4个或更少,则不应重定向)。 我正在尝试使用laravel 5.1内置的Validator。

utf8_encode_deep($query);

如果上述所有5个属性都失败,如何编写if条件,

    $failure = Validator::make($request->all(), [
        'firstName' => 'unique:registrations',
        'lastName' => 'unique:registrations',
        'line1' => 'unique:registrations',
        'city' => 'unique:registrations',
        'country' => 'unique:registrations'
    ]);

如果至少有一个属性失败,则执行此代码。请帮我解决一下。

3 个答案:

答案 0 :(得分:1)

list($key,$messages) = array_divide($failure->errors()->toArray());
if($key == ['firstname','lastname','line1','city','country']){
    //all has failed
}

答案 1 :(得分:0)

    $check = $failure->errors();

    if ($check->has('firstName') && $check->has('lastName') && $check->has('line1') && $check->has('city') && $check->has('country')) {   

        return redirect('<path>');
    }

这很有用

答案 2 :(得分:0)

如果无论哪种属性重复更合适的方式:

if (count($failure->getMessageBag()) >= 4) {
    return ...
}

如果仅针对某些领域,更美丽的方式:

if($validator->getMessageBag()->has(['firstName', 'lastName', 'line1', 'city', 'country'])) {
   return ...
}

您可以使用errors()getMessageBag() - 无论如何:)