Desidero inserire un campo per la ripetizione della password nella mia applicazione Web basata su Yii durante la creazione e l'aggiornamento dell'utente. Quando creo, voglio che entrambi i campi siano obbligatori e quando l'aggiornamento, l'utente può lasciare questi campi vuoti (la password sarà la stessa) o inserire la nuova password e confermarla. Come posso punteggiarlo?Campo ripetizione password Yii
risposta
Il primo, è necessario creare un nuovo attributo nel modello (in questo esempio lo chiamiamo repeatpassword):
class MyModel extends CActiveRecord{
public $repeatpassword;
...
successivo, è necessario definire una regola per assicurarsi che corrisponda il vostro attuale attributo Password:
public function rules() {
return array(
array('password', 'length', 'max'=>250),
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match"),
...
);
}
Ora, quando si crea un nuovo modello, il modello sarà non convalida a meno che la password e repeatpassword attributi partita. Come hai detto, questo è valido per creando un nuovo record, ma non vuoi convalidare la password corrispondente sull'aggiornamento . Per creare questa funzionalità, possiamo usare model scenarios
Abbiamo semplicemente cambiare il repeatpassword regola come visto sopra per avere una parmanter aggiuntivo:
...
array('repeatpassword', 'compare', 'compareAttribute'=>'password', 'message'=>"Passwords don't match",'on'=>'create'),
...
Tutto ciò che rimane da fare ora, è quando si dichiara il proprio modello su per la funzione di creare, utilizzare:
$model = new MyModel('create');
Invece del normale:
$model = new MyModel;
Un trucco sulla configurazione corrente è se l'utente sta tentando di aggiornare la password in un secondo momento. Ma a parte questo, sembra buono. – acorncom
Generalmente, probabilmente chiederesti all'utente di inserire la propria password due volte se si aggiornassero. Ho comunque tenuto conto di ciò con lo scenario ($ model = new MyModel ('create');) –
È possibile utilizzare il nome sceario come aggiornamento che è predefinito ogni volta che Yii crea un modello AR. e così il tuo modello diventa '$ model = new MyModel;' –
http://www.yiiframework.com/wiki/277/model-password-confirmation-field/ – Stu