Je ne parviens pas à détecter et afficher les erreurs de validation dans ma classe de contrôleurs CakePHP. J'ai ce modèle:Cake php, message de validation non affiché
public $validate = array(
'username' => array(
'notEmpty' => array(
'rule' => array('notEmpty'),
'message' => 'Your custom message here',
'allowEmpty' => false,
'required' => true,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
'alphaNumeric' => array(
'rule' => array('alphaNumeric'),
'message' => 'Your custom message here',
//'allowEmpty' => false,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
'maxLength' => array(
'rule' => array('maxLength', 50),
'message' => 'Your custom message here',
//'allowEmpty' => false,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
));
et voilà comment j'essaie d'attraper un message de validation dans le contrôleur en enregistrer un nouvel élément dans un tableau:
public function add() {
if ($this->request->is('post')) {
$this->Admin->set($this->request->data);
//$this->Admin->create();
if ($this->Admin->validates()) {
// it validated logic
if ($this->Admin->save($this->request->data)) {
$this->Session->setFlash(__('The admin has been saved.'));
return $this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The admin could not be saved. Please, try again.'));
}
} else {
// didn't validate logic
$errors = $this->Admin->validationErrors;
debug($errors);
}
}
}
mais il ne fonctionne pas. Si je passe un champ vide, une alerte avec un message par défaut est affichée dans la page add.ctp. Si j'insère un doublon, aucun message n'est affiché.
ok, mais comment puis-je attraper et afficher des messages d'erreur de validation? – giozh
J'ai ajouté $ this-> Admin-> set ($ this-> request-> data); à ma réponse. Si vous utilisez "save" vous n'avez pas besoin de -> set() et -> validates(). – mart