CakePHP: modificare la posizione dei messaggi di errore nei forms

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

CakePHP permette di validare i dati dei forms server side tramite la proprietà $validate dei modelli. Ad esempio:


class User extends AppModel {
    var $name = 'User';
    var $validate = array(
        'name' => 'notEmpty',
        'surname' => 'notEmpty',
        'mail' => 'mail'
    );
}

Utilizzando il Form Helper è poi possibile visualizzare automaticamente gli errori riscontrati all'interno della pagina. Creando il form:


echo $form->create('User');
    echo $form->input('User.name');
    echo $form->input('User.surname');
    echo $form->input('User.mail');
echo $form->end('Salva');

e compilandolo lasciando il campo "name" vuoto sarà visualizzato l'errore sotto al campo.

Con una piccola modifica al codice del form è possibile fare in modo che il testo dell'errore appaia tra la label e l'input. Il FormHelper esegue il rendering di ogni elemento di ogni campo di un form separatemente e utilizza l'opzione "format" per impostare l'ordine finale. Nel file cake\libs\view\helpers\form.php è specificato l'ordine predefinito nel caso in cui non si utilizzi l'opzione format:



<code>$format = $format ? $format : array('before', 'label', 'between', 'input', 'after', 'error'); </code>

Per modificare l'ordine è quindi necessario impostare correttamente l'opzione nella funzione di inizializzazione $form->create() in questo modo:


$format = array('before', 'label', 'between', 'error', 'input', 'after');
echo $form->create('User', array(
 'inputDefaults' => array('format' => $format)
));

NOTA: per i test è stato utilizzato CakePHP 1.3.6

Condividi questo post


Commenti