Disons que j'ai un champ qui ressemble à ceci à la vue:
<li class="bigfield">
<?php echo $form->input('phone', array(
'placeholder' => 'Phone',
'label' => false,
'between' => '<br />'
)); ?>
</li>
Si j'ai une règle de validation sur ce champ et la validation échoue, je vois le HTML suivant:
<li class="bigfield">
<div class="input text required error">
<br>
<input name="data[Appointment][email]" type="text" placeholder="Email"
maxlength="45" value="" id="AppointmentEmail" class="form-error">
<div class="error-message">Please enter a valid email address</div>
</div>
</li>
Je tiens à faire quelque chose comme Déplacer le message d'erreur DIV dans une autre partie différente de la page plutôt que de l'avoir à l'intérieur avec le même <li> comme le champ lui-même. Quelle serait la façon la plus directe de faire cela?
Je viens de mettre à jour un ancien post.
Les erreurs de validations sont automatiquement transmises à la vue (comme indiqué par @angel S. Moreno)
$this->validationErrors
$this->set('validationErrorsArray', $this->ModelName->invalidFields());
Tu vas avoir $validationErrorsArray
Dans votre point de vue.
Mise à jour (septembre 2014):
à partir de la vue
De CakePHP 2.3, vous pouvez accéder au tableau d'erreurs de validation à partir de vue :
$this->validationErrors;
à partir du contrôleur
Si vous avez essayé de sauvegarder des données dans le contrôleur, vous pouvez accéder aux erreurs de validation de cette façon:
$this->ModelName->validationErrors;
Si vous souhaitez valider des données avant d'économiser le faire de cette façon:
$this->ModelName->set($this->request->data);
if ($this->ModelName->validates()) {
$this->ModelName->save();
} else {
$errors = $this->ModelName->validationErrors;
// handle errors
}
Du contrôleur, vous pouvez utiliser:
$this->Modelname->validationErrors['TheFieldYouWantToDisplay'] = 'This is not correct'
Dans votre cas, ce serait comme ça dans votre contrôleur:
$this->Appointment->validationErrors['email'] = 'Error message'
Ce code est juste de créer un message d'erreur personnalisé à la volée. Mais vous pouvez également définir $ Valider dans le modèle et le faire comme la manière dont Rancer l'a décrit.