Bonjour tout le monde !

Me voilà de retour avec une nouvelle petite colle sur Cakephp.
J'ai beau chercher, je ne trouve pas comment m'en sortir ...

Voici mon problème : j'ai créer une messagerie interne tout ce qu'il y a de plus classique.
Un mail reçu est défini comme "non lu" tant que l'utilisateur ne l'a pas ouvert (quelle surprise !).

J'aimerais faire apparaître, dans la topbar de mon site qui se trouve dans le layout, une petite image d'enveloppe ainsi que le nombre de mail non lu reçus par l'utilisateur.

Pour la requête rien de bien compliqué évidement, un COUNT() des messages "non lu" envoyés à l'utilisateur et hop ça le fait !
Une fois les données récupérer, un petite condition pour afficher ou non l'enveloppe et on n'en par le plus.

Par contre, comment envoyer la variable au layout ?

C'est là que je sèche ! Quelqu'un aurait une piste ?

3 réponses


mansaychai
Auteur
Réponse acceptée

Je prends les devants et propose ma solution :

Pour récupérer une variable dans le layout une des méthode est de passer par le AppController.
Pour ma part j'ai utilisé une fonction beforeFilter() dans laquel j'ai pu effectuer ma requête et "setter" ma variable à mon layout default.ctp.

Dans le layout, un petit if et on n'en parle plus !

Pas plus compliqué que ça !

Bonjour,

Tu veux afficher ta variable lors du premier chargement de ta page? Ou bien le faire toutes les 5minutes par exemple pour savoir si l'utilisateur à un nouveau message sans qu'il ai besoin de rafraichir la page?

Tu viens de me faire prendre conscience que le layout n'est pas réactualisé à chaque chargement de vue ... !
Je dirais plutôt toutes les 5 minutes, c'est ce qui me parait le mieux (même si je pense que ce n'est pas le plus facile ! )