J'ai une variable contenant "nom d'utilisateur" et souhaitez obtenir ces valeurs via la session dans l'une des pages de vue. p>
Comment puis-je obtenir cette variable de session dans la vue? p>
6 Réponses :
Si vous êtes dans le contrôleur, utilisez le composant Session. Il est inclus, par défaut, dans tous les contrôleurs. Il a la session :: lecture () et session :: écriture () méthodes. Découvrez http://book.cakephp.org/view/173/sesstions pour Plus d'informations. P>
Je pense que si le composant de session ressemble à certains des autres composants, vous pouvez l'utiliser à l'intérieur des vues. Essayez de faire juste une session-> lire () dans vos blocs de code de vue. Si cela ne fonctionne pas, essayez de faire un $ ceci-> session-> lire (...). En dernier recours, si aucun de ceux-ci ne travaille, vous pouvez toujours utiliser le bon vieux PHP $ @Session, bien que ce soit un peu tourbillonnant à l'extérieur du cadre de gâteau. Cependant, si vous êtes sûr que vous n'utilisez pas que vous n'utilisez pas la gestion de la session de Cake (et que vous n'avez pas vraiment à vous, imo, car il s'agit d'un warnvier autour de $ @Session), alors savez simplement quand appliquer correctement le hack. p>
La gestion de la session de gâteau est i> plus qu'une simple wrapper autour de _ session code>, car il prend en charge plusieurs autres backends pour stocker des données de session. Vous pouvez choisir d'écrire la session dans une base de données pour potentiellement partagez-la sur des serveurs sans avoir à modifier une seule instance de
$ ceci-> session-> écrire () code> dans votre application.
Vrai, bien que je pense que je voudrais utiliser une méthode différente dans PHP pour modifier les autres gestionnaires de session, plutôt que de la mettre à l'intérieur du gâteau. Je suppose que vous m'avez attrapé penser principalement à la façon dont je pense à la composante, car je voudrais l'utiliser.
Les composants @Travisleleu ne sont jamais disponibles sur Vues par gâteau. J'ai testé vos croyances et je suis à peu près sûr de cela.
Il y a un SessionComponent Disponible dans votre contrôleur que vous pouvez utiliser comme $ ceci-> session-> écrire ("nom", "valeur"); code>. Analogiquement, il y a aussi le SessionHelper pour la vue, qui fait des choses très similaires et peut être utilisée comme
$ session-> lire ('nom'); code>. p>
Vous pouvez transmettre l'objet de session du contrôleur à un modèle de vue à l'aide de
$this->set('session',$this->Session);
Utilisateur Ceci dans You Contrôleur d'application avant le filtre P>
$ ceci-> session-> écrire ('personne.eyeColor', "nom d'utilisateur"); $ vert = $ ceci-> session-> lire ('personne.eyeColor'); $ ceci-> Set ('Nom d'utilisateur', $ vert); P> blockQuote>
Cela vous donnera le résultat que vous voulez p>
Pour l'utiliser dans une aide, vous devez vous rappeler de l'inclure dans votre déclaration d'aide $:
class Foo extends AppHelper { var $helpers = array('Session','Bar');
Vous pouvez utiliser Comme indiqué ici : p>
La différence majeure entre l'aide de la session et la session
Composant est que l'assistant n'a pas la capacité d'écrire sur le
Session. P>
blockQuote> $ ceci-> session-> lire ('myparam') code> dans vos fichiers de vues.
Mais vous ne pouvez pas utiliser $ ceci-> session-> écrire ('myparam') code>. P>
Pour une solution CakePHP 3.x Reportez-vous à Stackoverflow.com/a/32668870