E' possibile dare una priorità alle rules() ?

[size="2"][color="#1c2837"]Sto realizzando un form di registrazione,[/color][/size]

[color="#1c2837"][size="2"]nel model sto scrivendo tutte le rules da seguire, come ad esempio[/size][/color]

[size="2"][color="#1c2837"]email e password da valorizzare obbligatorie ed email univoca.[/color][/size]

[size="2"][color="#1c2837"]

[/color][/size]

[size="2"][color="#1c2837"]Al momento il problema che non riesco a risolvere è che[/color][/size]

[size="2"][color="#1c2837"]in caso di email doppia, il form mi obbliga prima a valorizzare tutti i campi[/color][/size]

[size="2"][color="#1c2837"]e solo dopo mi informa che la mail è già stata utilizzata.[/color][/size]

[size="2"][color="#1c2837"]

[/color][/size]

[size="2"][color="#1c2837"]Quello che mi piacerebbe fare è dare la priorità:[/color][/size]

[size="2"][color="#1c2837"]1) controlli che la mail sia inserita[/color][/size]

[size="2"][color="#1c2837"]2) controlli che la mail sia formalmente valida[/color][/size]

[color=#1C2837][size=2]3) che la mail non sia già stata inserita[/size][/color]

[size="2"][color="#1c2837"]4) che la password sia stata immessa[/color][/size]

[size="2"][color="#1c2837"]ecc. ecc.[/color][/size]

[size="2"][color="#1c2837"]

[/color][/size]

[size=“2”][color="#1c2837"]E’ possibile? O sto chiedendo troppo a yii ?[/color][/size]

con le rule dici quali regole devono seguire i dati inseriti nel form.

puoi fare quel controllo nel controller prima di salvare. se cè una mail doppia non procede al salvataggio e segnala l’errore.

:rolleyes:

dai un’occhiata a clientvalidation e ajaxValidation magari valuta se usarli entrambi

Che è esattamente quello che faccio.

Solo che ti avvisa solo alla fine (durante il validation) che la mail è doppia.

Prima il validation (compreso quello ajax) ti fa compilare tutti i campi mancanti.

@ga.n li uso insieme, ma anche quello ajax si comporta ugualmente

Questa è la mia funzione rules nel model User e avvisa l’utente immediatamente (usando ajaxValidation) in caso di email doppia:




	public function rules()


	{

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

			array('username, email, customer_id', 'required'),

            array('password, repeat_password', 'required', 'on'=>'insert'), /* resetPassword, insert */

            array('username, email', 'unique'),

            array('email', 'email'),

			array('customer_id', 'numerical', 'integerOnly'=>true),

			array('username, email', 'length', 'max'=>128),

            array('password, repeat_password', 'length', 'min'=>8, 'max'=>40),

			// The following rule is used by search().

			// Please remove those attributes that should not be searched.

			array('id, username, email, customer_id', 'safe', 'on'=>'search'),

            array('repeat_password', 'safe', 'on'=>'insert,update'), /* resetPassword, insert */       	

            array('repeat_password', 'compare', 'compareAttribute'=>'password'),

		);

	}