4.1 Validazione dei dati
The original text for this section has changed since it was translated. Please help resolve this difference. You can:
La validazione dei dati gioca un ruolo importante in tutte le applicazioni in quanto fa in modo che i dati all'interno dei Model rispondano ai requisiti delle regole di business. Ad esempio, potreste volere fare in modo che le password siano lunghe almeno otto caratteri, o richiedere che gli username sia univoci. Definendo le regole di validazione renderete la gestione dei form molto più semplice.
Vi sono molti aspetti differenti della valudazione. In questa sezione si vedrà la parte relativa al Model. In pratica, cosa accade quando invocate il metodo save() del vostro Model. Per maggiori informazioni su come gestire la visualizzazione degli errori di validazione, si veda la sezione relativa al FormHelper.
Il primo passo per eseguire la validazione è creare le regole all'interno del Model. Per fare questo si utilizza l'array Model::validate all'interno della definizione della classe. Ad esempio:
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array();
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array();}?>
Nell'esempio precedente, al Model User è stato aggiunto l'array $validate, ma questo non contiene alcuna regola di validazione. Come esempio consideriamo il fatto che la tabella degli utenti abbia un login, una password, un indirizzo di email ed un campo che rappresenta la data di nascita; l'esempio seguente mostra come applicare delle semplici regole di validazione a questi campi.
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'login' => 'alphaNumeric',
'email' => 'email',
'born' => 'date'
);
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array('login' => 'alphaNumeric','email' => 'email','born' => 'date');}?>
Quest'ultimo esempio mostra come aggiungere le regole di validazione ai campi di un Model. Nel campo login saranno accettate solamente lettere e numeri, l'email dovrà essere formalmente valida, così come la data di nascita. Definendo le regole di validazione si fa in modo che l'automatismo di CakePHP mostri i messaggi di errore nei form se i dati inviati non soddisfano le regole stesse.
CakePHP ha una serie di regole di validazione predefinite, ed utilizzarle è particolarmente semplice. Alcune di queste regole vi consentono di verificare il formato delle email, degli URL e dei numeri di carta di credito; nei paragrafi successivi verranno affrontati questi dettagli.
Di seguito viene mostrato un esempio di validazione complessa che si avvantaggia di alcune di queste regole di validazione predefinite:
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'login' => array(
'alphanumeric' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Sono ammessi solo lettere e numeri'
),
'between' => array(
'rule' => array('between', 5, 15),
'message' => 'La lunghezza deve essere compresa tra 5 e 15 caratteri'
)
),
'password' => array(
'rule' => array('minLength', '8'),
'message' => 'La lunghezza minima è di 8 caratteri'
),
'email' => 'email',
'born' => array(
'rule' => 'date',
'message' => 'Inserire una data valida',
'allowEmpty' => true
)
);
}
?>
<?phpclass User extends AppModel {var $name = 'User';var $validate = array('login' => array('alphanumeric' => array('rule' => 'alphaNumeric','required' => true,'message' => 'Sono ammessi solo lettere e numeri'),'between' => array('rule' => array('between', 5, 15),'message' => 'La lunghezza deve essere compresa tra 5 e 15 caratteri')),'password' => array('rule' => array('minLength', '8'),'message' => 'La lunghezza minima è di 8 caratteri'),'email' => 'email','born' => array('rule' => 'date','message' => 'Inserire una data valida','allowEmpty' => true));}?>
Per il login sono state definite due regole di validazione: il campo deve contenere solamente lettere e numeri e la sua lunghezza deve essere compresa tra 5 e 15 caratteri. Il campo password deve essere lungo almeno 8 caratteri. L'indirizzo di email deve essere valido così come la data di nascita. Si noti, inoltre, come è possibile specificare i messaggi di errore personalizzati che CakePHP mostrerà nel momento in cui una di queste regole di validazione non sarà soddisfatta.
Come mostrato nell'esempio precedente, un singolo campo può avere applicate più regole di validazione. Se le regole predefinite non soddisfano i vostri requisiti è sempre possibile aggiungere le proprie.
Ora che avete visto a grandi linee come funziona la validazione, cerchiamo di approfondire le modalità con cui le regole sono definite all'interno del Model. Ci sono tre modi differenti per specificarle: semplici array, una singola regola per campo o più regole per campo.


























