Salut j'était entrain d'écrir quand tu à modifier ton posts :)
tu à la redirection en commentaire dans ton code :) c'est normale?
le mieux serait de rediriger l'utilisateur sur le post qu'il vient de commenter que se soit valide ou non :) car si tu ne fait pas de redirection tu n'aura pas le post concerner juste la vue correspondante donc personnellement je mettrait un redirection :)
après si tu veut absolument une vue comment alors il faut ecrir le code de la fonction view dans la fonction comment et rajouter le code html qui est dans view dans le fichier comment se qui fait sa :
/* Fonction qui permet à l'utilisateur de créer son commentaire par rapport à un article
* @param $id L'id de l'article
*/
function comment($posts_id,$slug,$created,$id = null){
$this->loadModel('Comment');
if($this->request->data){
if($this->Comment->validates($this->request->data)){
$this->request->data->posts_id = $posts_id;
$this->request->data->created = $created;
$this->Comment->save($this->request->data);
$this->Session->setFlash('Le commentaire a bien été créé');
$this->redirect("posts/view/id:$posts_id/slug:".$slug);
}else{
$this->loadModel('Post');
$this->Session->setFlash('Merci de corriger vos informations','error');
//$this->redirect("posts/view/id:$posts_id/slug:".$slug);
//code de la fonction view
$this->loadModel('Post');
$d'post'] = $this->Post->findFirst(array(
'fields' => 'Post.id,Post.content,Post.name,Post.slug,Category.name as catname,Category.slug as catslug',
'conditions' => array('Post.online' => 1,'Post.id'=>$id,'Post.type'=>'post'),
'join' => array('categories as Category'=>'Category.id=Post.category_id')
));
$this->set($d);
}
}elseif($id){
$this->request->data = $this->Comment->findFirst(array(
'conditions' => array('id'=>$id)
));
}
$d'id'] = $id;
$this->set($d);
}
fichier view :
<div class="section_content">
<?php $title_for_layout = $post->name; ?>
<article>
<div class="article-header">
<?php // Affiche l'heure formaté
setlocale (LC_TIME, 'fr_FR','fra');
$dateFormat = $post->created;
$date = strftime("%A %d %B %Y",strtotime("$dateFormat"));
echo $date;
?>
</div>
<h1><?php echo $post->name; ?>, <small><a href="<?php echo Router::url('posts/category/slug:'.$post->catslug); ?>"><?php echo $post->catname; ?></a></small></h1>
<?php echo $post->content; ?>
</article>
<!-- Affichage des commentaires-->
<?php foreach($comments as $k => $v): ?>
<hr><p><?php echo $v->content; ?></p>
<?php endforeach ?>
<?php require('comment.php'); ?>
</div>
<?php require('sidebar.php'); ?>
<!-- Formulaire de création de commentaire -->
<form action="<?php echo Router::url("posts/comment/".$post->id."/".$post->slug."/".date('Y-m-d')."/"); ?>" method="post">
<div class="content">
<?php echo $this->Form->input('pseudo','Pseudo *'); ?>
<?php echo $this->Form->input('mail','Mail *'); ?>
<?php echo $this->Form->input('content','Message *'); ?>
<div class="submit">
<input type="submit" value="Valider" >
</div>
</div>
</form>
<p>* Champs obligatoire</p>
après c'est mon conseil mais sa évitera les doublons de code inutile car tu ira de toute façon que sa soit valide ou non dans la vue view.php ;)