Bonjour,

En fait voilà j'ai une petite question , j'essaye d'utiliser des variables de sessions que je lis dans différents controllers de mon application. Ma question est de savoir quand je modifie ma variable de session dans un de mes controllers est-ce que elle est prise en compte par mes autres controllers ou bien dois je lui donner un nouveau nom. Par contre si j'utilise pas mes variables de session mais que j'envoie mes données via URL cela fonctionne correctement.

Ce que je fais

Dans mon controller choix j'ai crée des variables de session

$this->Session->write('argent', 500);   
$this->Session->write('level', 0);```
$level = $this->Session->read('level');
$argent = $this->Session->read('argent'); `

    $id_choix1=$choix1['choix']['id'];
    $id_choix2=$choix2['choix']['id']; 
    $id_level = $choix1['choix']['niveau'];

/** on vérifie qu'il s'agit bien de deux choix différents **/
    if ($id_choix1==$id_choix2){
        //sinon on recharge la page
        return $this->redirect(array('action' => 'jeux'));
    }

    $affiche_choix1=$choix1['Theme']['Nom'];
    $affiche_choix2=$choix2['Theme']['Nom'];

    $level++;
``
Mon model choix:

``

    public function getRandomByLevel($level = 0){

       $rand =  $this->find('first', array(
            'order'=>'rand()',
            'conditions' => array('NIVEAU' => $level)));
        return $rand;

Mon controller Reponse qui verifie si c'est correct

``
$level = $this->Session->read('level');

if($valeurs ==$bonnereponse ){

            $this->Session->read('level')+1;

            return $this->redirect(array('controller'=>'Themes', 'action' => 'jeux'));


### Ce que je veux

C'est que ma variable session augmente de 1 lors de la redirection

### Ce que j'obtiens

il prend pas en compte mon changement dans ma variable de session.

1 réponse


Lartak
Réponse acceptée

Bonsoir.

quand je modifie ma variable de session dans un de mes controllers est-ce que elle est prise en compte par mes autres controllers

Pour répondre à ta question, lorsque tu modifies une valeur de la session elle sera répercutée sur toute l'application.
Et lorsque tu fais :

$this->Session->read('level')+1;

ça ne change pas la valeur, il faut utiliser la méthode write pour la modifier et non la méthode read.