Ich möchte Passwort wiederholen Feld in meiner Web-Anwendung basierend auf Yii beim Erstellen und Aktualisieren von Benutzer. Bei der Erstellung möchte ich, dass beide Felder benötigt werden und beim Update kann der Benutzer diese Felder leer lassen (Passwort ist gleich) oder ein neues Passwort eingeben und bestätigen. Wie kann ich es tun?Yii Passwort wiederholen Feld
Antwort
Erstens, müssen Sie ein neues Attribut in Ihrem Modell erstellen (in diesem Beispiel nennen wir es repeatpassword):
class MyModel extends CActiveRecord{
public $repeatpassword;
...
Als nächstes müssen Sie eine Regel definieren, um sicherzustellen, es entspricht Ihre bestehenden Kennwort Attribut:
public function rules() {
return array(
array('password', 'length', 'max'=>250),
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match"),
...
);
}
wenn nun ein neues Modell erstellt wird, wird das Modell validieren nicht, es sei denn das Passwort und repeatpassword Spiel Attribute. Wie Sie bereits erwähnt haben, ist dies in Ordnung für erstellen einen neuen Datensatz, aber Sie möchten nicht das übereinstimmende Passwort auf dem Update validieren. Um diese Funktionalität zu erstellen, können wir verwenden model scenarios
Wir ändern einfach die repeatpassword Regel wie oben gesehen eine zusätzliche parmanter haben:
...
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match",'on'=>'create'),
...
Alles, was jetzt zu tun bleibt, ist, wenn Ihr Modell erklärt auf für die Funktion erstellen, verwenden:
$model = new MyModel('create');
Statt der normalen:
$model = new MyModel;
Ein Problem mit Ihrer aktuellen Konfiguration ist, wenn der Benutzer versucht, sein Passwort zu einem späteren Zeitpunkt zu aktualisieren. Aber ansonsten sieht es gut aus. – acorncom
Im Allgemeinen würden Sie wahrscheinlich den Benutzer bitten, sein Passwort zweimal einzugeben, wenn sie aktualisiert wurden. Ich habe dies mit dem Szenario sowieso berücksichtigt ($ model = new MyModel ('create');) –
Sie können den scenario-Namen als Update verwenden, der jedes Mal neu ist, wenn Yii ein AR-Modell erstellt. und so Ihr Modell wird $ Modell = neue MyModel; –
http://www.yiiframework.com/wiki/277/model-password-confirmation-field/ – Stu