Bonjour,
Je n'arrive pas avoir accès au helper Session dans un de mes layout. Et pourtant le helper Session est activé dans le AppController.
De plus en utilisant le plugin Debug Kit il me dit que ma variable session est null et lorsque je fais un débug de $_Session j'y trouve des valeurs. Ca fait 2 jours que je me tire les cheveux et je ne voix pas d'où peut venir l'erreur. Est ce qu'il faut une configuration de la session.

Merci d'avance!!

6 réponses


Salut Sean,

Dans ta vue, tu peux utiliser

$this->Session->read('Auth.User.id')

Pour accéder au variable de sessions. (Ici l'id d'un utilisateur).

Tu peux mettre ca en bas de ton fichier de layout, juste avant le debug du 'sql_dump'

debug($this->Session->read());

Tu vois tout ce que tu as en session de disponible. Ensuite tu navigues dans ton tableau comme l'a expliqué PallMallShow

Sean78
Auteur

Salut je fais ceci ```
$this->Session->write('Person.eyeColor', 'Green');


**<Warning (512): Method SessionHelper::write does not exist [CORE/Cake/View/Helper.php, line 192]** Voici le message que j'ai et lorsque je fais ```
debug($this->Session->read());
``` il me dit que la variable est vide alors que non.

Merci, je suis assez perdu!

le Helper ne peut pas écrire dans la session les cocos, à l'inverse du Component.
SessionHelper::write , ca n'existe pas, parce que n'est pas une bonne pratique MVC

Sean78
Auteur

Merci @amethyste du rappel, néanmoins toujours bloqued. Pour faire simple je vous explique ce que je souhaite faire et que peut etre je m'y prends mal.
Donc voilà: lorsqu'un utilisateur se connecte à mon appli je compte le nombre de pages qu'il ouvre. En effet toutes les 5 pages ouvertes il ouvre une image (via fancybox) qui se ferme au bout de 3 secondes. D'où l'idée de faire intervenir les sessions. Dans beforefilter je fais ceci:

public function beforeFilter() {
    $sssi = $this->Session->read('guest.i');

            if ($sssi == '') {
                debug($sssi);
                    $this->Session->write('guest.id',md5(rand(1,100).time()));
                    $this->Session->write('guest.i',1);
                    $de = '<div style="display:none">
                    <a id="single_1" href="img/web-ban-600x500.png">
                        <img src="img/photo/pub/ebenradio.jpg" alt="" />
                    </a>
                </div>';
        $this->set(compact('de'));
        $this->Session->write('de',$de);
                } else {
                    $i = $this->Session->read('guest.i');
                    $j=$i/5;
                    $k = $j - floor($j);
                    $i = $i +1;
                    $this->Session->write('guest.i',$i);
                    if ($k == 0) {
                        $de = '<div style="display:none">
                    <a id="single_1" href="img/photo/pub/eben-radio-cs.png">
                        <img src="img/photo/pub/ebenradio.jpg" alt="" />
                    </a>
                </div>';

                    $this->set(compact('de'));
                    $this->Session->write('de',$de);
                     } else { $this->set('de',''); $this->Session->write('de','');}
                }

}

Et dans mon layout par défaut je fais juste : <?php echo $de; ?> Vous l'imaginez bien ça ne fonctionne pas.
Si vous avez des idées sur une autre façon de faire je suis preneur merci les amis!

je pense que tu devrais utiliser les cookies pour faire ça. Ensuite jquery.cookie.js te permettrais de lancer fancybox.