Bonjour,
Quand je fais une erreur dans un formulaire, le formulaire n'ai pas validé, mais j'ai l'erreur qui ne s'affiche pas à coté du champs.
Je vous montre le code.
PostsController.php (controller) :
<?php
function see($id = null){
if(!is_numeric($id)){
$this->redirect(array(
'controller' => 'posts',
'action' => 'index'
),
301,
true);
die();
}
if($this->request->is('post')){ // Formulaire de commentaire
// $this->loadModel('Commentary');
if($this->Post->Commentary->save($this->request->data)){
$this->Session->setFlash('Votre commentaire à bien été pris en compte.', 'FlashMessage');
}else{
$this->Session->setFlash('Tous les champs du formulaire ne sont pas renseignés correctement.', 'FlashMessage', array('type'=>'info'));
}
debug($this->Post->Commentary->validationErrors);
}
$req = $this->Post->find('first',array(
'conditions'=>array(
'Post.online'=>1,
'Post.id'=>$id
)
));
if(!empty($req)){
$this->set('article',$req);
$this->set('title_for_layout', 'Blog :: '.$req'Post']'name']);
}else{
$this->redirect(array(
'controller' => 'posts',
'action' => 'index'
),
301,
true);
}
}
see.ctp (vue) :
<div class="commentArea">
<h2>Les commentaires</h2>
<?php
echo $this->Form->create('Post.Commentary', array(
'type' => 'post',
'url'=>array(
'controller'=>'posts',
'action'=>'see',
$article'Post']'id']
)
));
echo $this->Form->input('Commentary.name',array('label'=>'Votre pseudonyme : '));
echo $this->Form->input('Commentary.mail',array('label'=>'Votre e-Mail : ', 'type'=>'email'));
echo $this->Form->input('Commentary.content',array('label'=>'Votre commentaire : ','type'=>'textarea'));
echo $this->Form->end('Envoyer');
echo 'Tous les champs sont obligatoire !';
?>
</div>
Commentary.php (model) :
<?php
public $validate = array(
'name' => array(
'nameRule-1' => array(
'rule' => array('between', 3, 25),
'message' => 'Votre pseudonyme doit comporter au minimum 3 caractères et 25 maximum.'
),
'nameRule-2' => array(
'rule' => 'alphaNumeric',
'required' => true,
'message' => 'Votre pseudonyme doit être composé uniquement de lettre et de chiffres.'
)
),
'mail' => array(
'rule' => array('email', true),
'required' => true,
'message' => 'Veuillez remplir une adresse email valide.'
),
'content' => array(
'rule' => array('between', 10, 500),
'required' => true,
'message' => 'Votre commentaire doit comporter entre 10 et 500 caractères.'
)
);
Le debug($this->Post->Commentary->validationErrors); donne :
app/Controller/PostsController.php (line 56)
array(
'name' => array(
(int) 0 => 'Votre pseudonyme doit comporter au minimum 3 caractères et 25 maximum.'
),
'mail' => array(
(int) 0 => 'Veuillez remplir une adresse email valide.'
),
'content' => array(
(int) 0 => 'Votre commentaire doit comporter entre 10 et 500 caractères.'
)
Quand je laisse mon formulaire vide, j'ai bien "Tous les champs du formulaire ne sont pas renseignés correctement.", mais j'ai aucune erreur affichée sur le formulaire.
Et ce que je n'arrive pas à comprendre c'est que le "$this->validationErrors" soit "null". Je pense qu'il doit y avoir un paramètre que je n'ai pas renseigné pour activer le retour des erreurs dans la variable "validationErrors".
Merci.
BD