2016-09-18 116 views
0

我想用laravel来验证我的表单字段5.Laravel 5个验证

表单字段1 - >用户ID:

表格字段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,当其他名称不存在是必要的。另外如果我填写它既接受两个。它应该接受这两个领域之一。

任何帮助将不胜感激。

+0

试试这个[相同类型的问题和答案](http://stackoverflow.com/questions/30635678/laravel-validation-required-only-and-only-one-field) –

回答

1

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

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

使用extendImplicit()代替extend()来覆盖空字段请求。