2016-03-21 10 views
0

Bir güncelleştirmeyi bir kerede nasıl kullanabilirim? Şu anda bir kullanıcı benzersiz bir e-posta adresine sahip olmalıdır. Ancak güncellediğimde, zaten var olan bir hata atar.Laravel update Validator

Ne yapabilirdim?

$validator = Validator::make($request->all(), [ 
      'RoleId'   => 'required|numeric', 
      'DepartmentId'  => 'required|numeric|max:10', 
      'FirstName'   => 'required|string|max:50', 
      'LastName'   => 'required|string|max:50', 
      'email'    => 'required|email|unique:employee|max:50', 
      'Gender'   => 'required|numeric|max:1', 
      'password'   => 'required|max:50', 
      'Address'   => 'required|string|max:50', 
      'Zip'    => 'required|string|max:50', 
      'City'    => 'required|string|max:50', 
      'BirthDate'   => 'required:date|max:10', 
      'StartDate'   => 'required:date|max:10', 
      'EndDate'   => 'required:date|max:10', 
      'Suspended'   => 'required:numeric:max:1' 
     ]); 

cevap

0

İlk kapatma Laravel 5 üzerindeyseniz varsayıyorum. Öyleyse bu geçerli olmayabilir. Ama sen benzersiz doğrulama üzerinde bir satır yok saymak istiyorum belirtebilirsiniz:

'email' => 'required|email|max:50|unique:employee,email,' . $input->id, 

Yani önce kontrol edip doğrulayıcı dize ayarlamak veya sometimes seçeneğini kullanabilirsiniz ya. Sadece gizli bir alan ya da $model->id değerini geçen bir şey oluşturmanız gerekir.

<input type='hidden' value='{{$model->id}}' name='id' /> 

Seçenek 1

$email_validator = "unique:employee,email"; 
if($request->input('id',0) > 0) { 
    $email_validator .= "," . $request->input('id'); 
} 
$validator = Validator::make($request->all(), [ 
    ... 
    'email' => 'required|email|max:50|' . $email_validator, 
    ... 
]); 

Seçenek 2

$validator = Validator::make($request->all(), [ 
    ... 
    'email' => 'required|email|max:50', 
    ... 
]); 
$validator->sometimes('email','unique:employee,email,' . $request->input('id'),function($input){ 
    return $input->id > 0; 
}); 
$validator->sometimes('email','unique:employee',function($input){ 
    return $input->id == 0; 
});