Bonjour,
Je me suis fait un petit système de spam et de déblocage des commentaires. Si un commentaire à le champ "spam" à 1 il ne s'affichera tant que je n'est pas approuvé que ce n'est pas un commentaire indésirable. Quand je clique sur le lien il refuse de modifier le champ "spam" de l'id qui est passé en paramètre.

public function admin_unblock($id){
                // On récupère l'id du commentaire qui à le champ "spam" à 1
        $comment = $this->Comment->find("first",array(
            'conditions' => array('Comment.spam' => 1, 'Comment.id'=>$id),
            'fields' => array('id')
        ));
                // On vérifier la requête
        if (empty($comment)) {
            throw new NotFoundException("Désolé, il y a acun commentaire qui corresponde à cette ID");  
        }
                // On modifie le champ "spam" de l'id du commentaire afin que celui passe de 1 à 0
        $this->Session->setFlash("Le commentaire a été accepté  .",'notif');
        $this->Comment->save(array(
            'Comment.id' => $comment'Comment']'id'],
            'Comment.spam' => 0
        ));
                // On retourne à la page précédente avec un message de confirmation.
        return $this->redirect($this->referer());
}

Merci de votre aide en avance,

2 réponses


satchette
Réponse acceptée

Je pense que ton tableau passé en argument de la fonction save() n'est pas au bon format.
Il devrait plutôt ressembler à ceci :

$this->Comment->save(array(
    'Comment' => array(
        'id' => $comment'Comment']'id'],
        'spam' => 0
    )
));

Tu peux aussi faire :

$this->Comment->id = $id;
$this->Comment->saveField('spam', 0);
lakamark
Auteur

Merci satchette