Bonsoir à tous!
Voilà mon problème est dans le titre .
Je veux supprimer une variable de session dans une vue mais sa fonctionne pas . Je peut seulement la lire....
Et je comprend pas pourquoi ..
Par contre si je fais çà:
<?php unset($_SESSION[var]); //fonctionne
$this->Session->delete(var) //fonctionne pas
?>
La sa fonctionne.
Quelqu'un aurait une idée
Merci d'avance ;)
Bonjour,
j'ai pas fait de CakePHP depuis un bail mais est ce que le problème ne vient pas du fait que tu appelles la session avec la syntaxe Controller ?
Essaye ceci :
<?php
SessionComponent::delete(var);
et dis moi si ça fonctionne.
Je vais tester ça dès que je peux.
Mais je ne pense pas vu que d'en une vue on peut lire les variables de session .
<?php
$this->Session->read(var);
La lecture fonctionne..
Merci et je te tiens au courant ;)
Apparemment le delete sur la session se fait à partir d'un controller.
Il doit y avoir une gestion de cake pour savoir d'où la commande vient.
Si ça vient d'une vue, il doit la refuser.
Du coup, soit tu reste avec ton unset qui fait la même chose, et tu pourras delete ta session sur ta vue.
Soit tu fait un appel ajax sur ton controller qui va delete ta session avec le composant Cake
Bonjour,
Tu peux passer par une method détourné pour supprimer la session :
Tu appelle une method d'un controller qui lui a les droits d'editer la session.
$this->requestAction(array( 'controller' => 'toncontroller', 'action' => 'fonction'));
//Ex: controller => Users, action => deleteSession
Après c'est pas très MVC tout çà :P
Du coup, soit tu reste avec ton unset qui fait la même chose, et tu pourras delete ta session sur ta vue.
Soit tu fait un appel ajax sur ton controller qui va delete ta session avec le composant Cake
Je pencherai plutôt pour la deuxième solution. Ce n'est pas à la vue de réaliser ce genre d'opérations. Elle ne doit qu'afficher des informations. C'est normalement au Model de réaliser ça (mais ça peut passer dans un Controller pour ne pas s'embêter).
Soit tu fais avec un requestAction() comme le dit Gyuki, soit en Ajax. Tout dépend de ce que tu réalises avant et après ta suppression de session.
Attention au requestAction(), c'est très laid comme proposition :D (je n'ai rien contre toi Gyuki, ne t'inquiète pas)
Le requestAction() simule une requête et donc renvoie une réponse.
Jusque là : Ok
MAIS : la réponse envoyé par les méthodes des controlleurs cake est ni plus ni moins que le render d'une vue.
Du coup le requestAction() va te construire la vue associée à la route que tu as fait appel ('fin, c'est ce que j'ai compris en l'utilisant)
C'est pas terrible terrible ce requestAction() finalement...
Je ne le prend pas pour moi, mais s'il fait une methode qui utilise
$this->autoRender = false;
//ou
$this->render(false);
A ce momment la, il peux decider de retourner true ou false si la session a bien été supprimé.