2016-07-05 10 views
0

In meinem CreateUserRequest für E-Mail hat es die Validierungsregel von unique, und es ist das gleiche für meine EditUserRequest, aber es sagt immer, dass die Adresse bereits registriert ist. Wie schließe ich die E-Mail-Adresse des Benutzers, den ich aktualisiere, von der Eindeutigkeit in den Regeln aus? Ansonsten muss ich jedes Mal, wenn der Benutzer aktualisiert wird, eine neue E-Mail-Adresse registrieren.So halten Sie die eindeutige Validierung 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 
     ]; 
    } 
} 

Antwort

0

Sie benötigen EditUserRequest zu ändern und die ID des aktuellen Datensatz hinzufügen, um ignoriert werden.

Werfen Sie einen Blick auf die offizielle Dokumentation: https://laravel.com/docs/5.1/validation#rule-unique im Absatz: Eine eindeutige Regel Erzwingen einer ID Gegeben zu ignorieren

Etwas wie:

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

Sie können Request :: input ('id') anstelle von $ user-> id verwenden, wenn Sie keine Abhängigkeitsinjektion haben. –

+0

Sie können auch 'request() -> id' verwenden. – user2094178

+0

Es besagt, dass $ user nicht definiert ist. Wie gebe ich rules() Zugriff auf den $ user? –

0

, dass alle notwendigen war wurde das Hinzufügen $user = User::find($this->users); und dann einfach $user->id; wie vorgeschlagen anhängen. Fehlt nur der Benutzer an erster Stelle zu finden.

Verwandte Themen