Bonjour à tous,
je suis confronté à deux petits soucis avec mes commentaires, j'essaye de créer des règles de validations dans mon model Comment.php sur le contenu de mon commentaire. Je ne le fais pas sur le pseudo et le mail puisque seul les membres peuvent commenter.
Actuellement sans les règles, un membre peut poster un commentaire sans contenu, vide. Lorsque j'essaye de créer des règles plus rien fonctionne, que ce soit sans ou avec un contenu. Mon second soucis et que je n'arrive pas à créer une fonction delete pour un commentaire, à priori c'est lié à l'id du commentaire (pour info j'ai crée un CommentsController.php que pour cette fonction, je ne sais pas si c'est un bon choix, le reste étant dans mon PostsController.php).
Voici mes codes :
PostControllers
function show($id = null,$slug = null){
if(!$id)
throw new NotFoundException('Aucune article ne correspond à cet ID');
if(!empty($this->request->data)){
if($this->Post->Comment->validates()){
$this->Post->Comment->save($this->request->data);
$this->Session->setFlash("Votre commentaire a bien été enregistré !", "notif");
}else{
$this->Session->setFlash("Votre commentaire n'a pas été enregistré !", "notif", array('type' => 'error'));
}
}
$d'comments'] = $this->Post->Comment->find('all',array(
'conditions' => array('Comment.post_id' => $id),
'recursive' => 0,
));
$post = $this->Post->find('first',array(
'conditions' => array('Post.id' => $id,'type'=>'post'),
'recursive' => 0,
));
if(empty($post))
throw new NotFoundException('Aucune article ne correspond à cet ID');
if($slug != $post'Post']'slug'])
$this->redirect($post'Post']'link'],301);
$d'post'] = $post;
$this->set($d);
}
CommentsControllers
function delete($id){
$this->Session->setFlash('Le commentaire a bien été supprimée','notif',array('type'=>'success'));
$this->Comment->delete($id);
$this->redirect($this->referer());
}
Model : Comment.php
public $validate = array(
'content' => array(
'rule' => 'notEmpty',
'required' => true,
'message' => 'Vous devez entrer un commentaire'
)
);
View : show.ctp
<?php foreach($comments as $comment): ?>
<?php if(AuthComponent::user('id') == $comment'User']'id']): ?>
<?php echo $this->Html->link($this->Html->image("/img/icons/delete.png", array('class' => 'comment-edit right')),
array('controller' => 'Comments', 'action' => 'delete')); ?>
<?php endif; ?>
<?php echo $comment'User']'username']; ?>
<?php echo $comment'Comment']'content']; ?>
<?php endforeach; ?>
Merci de votre aide