2015-03-11 18 views
11

I Regeln im Modell als geschrieben haben:Passwort wiederholen funktioniert nicht in Yii2

public $password_repeat; 

/** 
* @inheritdoc 
*/ 
public function rules() 
{ 
    return [ 
     .... 
     .... 
     ['password', 'required'], 
     ['password', 'string', 'min' => 6], 
     ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ], 
    ]; 
} 

Wenn ich anderes Passwort verwenden in Password und Password Repeat Feld, gibt es Fehler. Also, das heißt, es funktioniert. Aber das Problem ist, dass es keinen Fehler gibt, wenn Password Repeat Feld leer ist. sowie

+1

müssen Sie mit Passwort wiederholen wie [ 'password_repeat', 'erforderlich'] erforderlich erwähnen, – MKD

Antwort

22

einen erforderlichen Tag für password_repeat hinzufügen. Hier findest

return [ 
     .... 
     ['password', 'required'], 
     ['password', 'string', 'min' => 6], 
     ['password_repeat', 'required'], 
     ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match" ], 
    ]; 
+0

Wir brauchen nicht 'required' in' Yii.1 zu verwenden. * '. Kannst du mir sagen, warum wir in 'Yii2' verwenden müssen? – StreetCoder

+0

Yü und Yii2 haben viele undokumentierte Unterschiede aufgrund yii2 unabhängig von Grund auf neu gebaut. Dies ist nur einer von ihnen. – arkoak

+0

okay danke :). Ich habe es – StreetCoder

8

Ein weiterer Ansatz ist die $ skipOnEmpty Variable auf false gesetzt:

return [ 
.... 
    ['password', 'required'], 
    ['password', 'string', 'min' => 6], 
    ['password_repeat', 'compare', 'compareAttribute'=>'password', 'skipOnEmpty' => false, 'message'=>"Passwords don't match"], 
]; 

Dies hat den Vorteil, dass Sie nur die Wiederholung Passwort-Feld machen erforderlich, wenn das Kennwort einen Wert in sich hat auch.

+0

brilliant - danke. Für jeden, der dies versucht, müssen Sie dem Modell eine öffentliche Variable hinzufügen, andernfalls wird das Formular einen Fehler melden. Ie .: public $ password_repeat – DrBorrow