Bonjour bonsoir,

J'aimerai créer un comportement à greffer sur un model (via un behavior j'imagine), qui detecte l'action du controller, et si c'est une action "view", incrémente un champs nbVu + 1 dans la BDD pour la page affichée. Il faut ausssi stocker ça dans un cookie pour éviter d'incrémenter à chaque rechargement de page de l'utilisateur.
Pour l'instant je fais ça :

    public function view($id = null)
    {
        $blog = $this->Blogs->get($id);
        $this->_incrViews($blog->id);
        $this->set(compact('blog'));
    }

    private function _incrViews($id = null) {
        if(!$this->Cookie->check('UV.Blogs'.$id)){
            $this->Cookie->config(['expires' => '+10 days','httpOnly' => true]);
            $this->Cookie->write('UV.Blogs'.$id, '1');
            $expression = 'nb_vu = nb_vu + 1';
            $this->Blogs->updateAll([$expression], ['Blogs.id' => $id]);
        }
        return true;
    }

ça fonctionne bien, mais je dois réécrire ça dans tous les controllers... j'aimerai créer un bout de code similaire qui s'éxécutera automatiquement comme je l'ai dit plus haut.
J'ai cherché dans le book dans la page évenement système, mais j'avoue que j'y comprends pas grand chose. De plus, il faut utiliser le component cookie, mais depuis un behavior ça me semble impossible.

Suis-je dans une impasse ?

Aucune réponse