2016-07-05 3 views
0

В моем CreateUserRequest для электронной почты у нее есть правило проверки уникальности, и это то же самое для моего EditUserRequest, но он продолжает говорить, что адрес уже зарегистрирован. Как я могу исключить адрес электронной почты пользователя, который я обновляю из уникальности в правилах? В противном случае я должен регистрировать новый адрес электронной почты каждый раз, когда пользователь обновляется.Как сохранить уникальную валидацию Laravel 5.2

EditUserRequest:

namespace App\Http\Requests; 

use App\Http\Requests\Request; 

class EditUserRequest extends Request 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    public function messages() 
    { 
     return [ 
      'unique'=>'That email address is already registered', 
      'regex'=>'Password must contain at least 1 letter and 1 number' 
     ]; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'name'=>'required|min:2|max:50', 
      'email'=>'required|email|unique:users,email|max:50' 
      //'password'=>'min:8|regex:/[a-zA-Z][0-9]/' NOT IN USE WHILE IN DE 
     ]; 
    } 
} 

CreateUserRequest:

namespace App\Http\Requests; 

use App\Http\Requests\Request; 

class CreateUserRequest extends Request 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

    public function messages() 
    { 
     return [ 
      'unique'=>'That email address is already registered', 
      'regex'=>'Password must contain at least 1 letter and 1 number' 
     ]; 
    } 

    /** 
    * Get the validation rules that apply to the request. 
    * 
    * @return array 
    */ 
    public function rules() 
    { 
     return [ 
      'name'=>'required|min:2|max:50', 
      'email'=>'required|email|unique:users,email|max:50', 
      'password'=>'required' 
      //'password'=>'required|min:8|regex:/[a-zA-Z][0-9]/' NOT IN USE WHILE IN DE 
     ]; 
    } 
} 

ответ

0

Вы должны изменить свой EditUserRequest и добавить идентификатор текущей записи игнорируются.

Посмотри на официальные документах: https://laravel.com/docs/5.1/validation#rule-unique в пункте: Принуждение Unique правила игнорировать данный идентификатор

Что-то вроде:

'email'=>'required|email|unique:users,email,'. $user->id .'|max:50' 
+0

Вы можете использовать Request :: input ('id') вместо $ user-> id, если у вас нет инъекции зависимостей. –

+0

Вы также можете использовать 'request() -> id'. – user2094178

+0

В нем говорится, что $ user не определен. Как предоставить правила() доступ к $ user? –

0

Все, что было необходимо добавляли $user = User::find($this->users); и затем просто добавьте $user->id;, как было предложено. Просто отсутствовал поиск пользователя в первую очередь.

Смежные вопросы