Laravel 5验证

时间:2016-09-18 11:33:10

标签: php laravel validation laravel-5 laravel-5.2

我想使用laravel 5验证我的表单字段。

表单字段1 - >用户名:

表格字段2 - >其他名称:

任何一个表单字段都是必需的。 我的意思是,如果存在用户ID,则其他名称应为空,如果存在其他名称,则user_id应为空。

我正在尝试使用:

$validator = Validator::make(
                            [
                        'user_id ' => $user_id,
                        'user_name' => $user_name
                            ], [
                        'user_id' => 'required_without:user_name',
                        'user_name' => 'required_without:user_id'
            ]);
            if ($validator->fails()) {
                return Utility::validation_err($validator);
            }

在更新记录时,即使用户ID存在,它也会给我错误,当其他名称不存在时,需要用户ID。如果我填写它同时接受两者。它应该接受这两个领域中的一个。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用自己的验证规则,例如“only_one_id_name_required”。它应该应用于这两个领域。接下来在App \ Providers \ AppServiceProvider中放置Validator

Validator::extendImplicit('only_one_id_name_required', function($attribute, $value, $parameters, $validator) {
    return (request()->has('user_id') xor request()->has('user_name'));
});

使用extendImplicit()而不是extend()来覆盖空字段请求。