2009-10-20 13 views
8

Ich habe eine Variable, die "Benutzername" enthält und möchte diese Werte über Sitzung auf einer der Ansichtsseiten erhalten.CakePHP Sitzungsvariable in der Ansichtsseite verwenden?

Wie kann ich diese Sitzungsvariable in der Ansicht abrufen?

+1

Für eine CakePHP 3.x Lösung beziehen sich auf http://stackoverflow.com/a/32668870 – Imdad

Antwort

0

Wenn Sie im Controller arbeiten, verwenden Sie die Session-Komponente. Es ist standardmäßig in allen Controllern enthalten. Es verfügt über die Methoden Session :: read() und Session :: write(). Weitere Informationen finden Sie unter http://book.cakephp.org/view/173/Sessions.

Ich glaube, wenn die Sitzung Komponente wie einige der anderen Komponenten ist, können Sie es in den Ansichten verwenden. Probieren Sie einfach $ session-> read() in Ihren View-Codeblöcken aus. Wenn das nicht funktioniert, versuchen Sie $ this-> Session-> read (...). Als letzter Ausweg können Sie, wenn keiner davon funktioniert, immer den guten alten PHP $ _SESSION verwenden, obwohl er außerhalb des Cake-Frameworks schwankt. Wenn Sie jedoch sicher sind, dass Sie die Cake Session-Verwaltung nicht verwenden werden (und Sie müssen das nicht wirklich tun, IMO, da es kaum mehr als ein Wrapper um $ _SESSION ist), dann wissen Sie einfach, wann Sie den Hack richtig anwenden.

+2

Das Management Kuchen Session * ist * mehr als nur ein Wrapper um '$ _SESSION', da es mehrere Backends unterstützt zum Speichern von Sitzungsdaten. Sie können festlegen, dass die Sitzung in eine Datenbank geschrieben wird, um sie möglicherweise für mehrere Server freizugeben, ohne dass eine einzelne Instanz von $ this-> Session-> write() 'in Ihrer App geändert werden muss. – deceze

+0

Wahr, obwohl ich denke, dass ich eine andere Methode innerhalb von PHP verwenden würde, um die anderen Session-Handler zu ändern, anstatt sie in Cake einzufügen.Schätze, du hast mich dabei erwischt, wie ich hauptsächlich an die Komponente denke, wie ich sie benutzen würde. –

+1

Es ist schon da und es funktioniert gut, warum nicht benutzen? :-) – deceze

12

In Ihrem Controller ist ein SessionComponent verfügbar, den Sie wie $this->Session->write('Name', 'Value'); verwenden können. Analog gibt es auch die SessionHelper für die View, die sehr ähnliche Dinge macht und wie $session->read('Name'); verwendet werden kann. mit

$this->set('session',$this->Session); 

dann in View-Datei Verwendung $session->read('SessionName');

-2

Sie können die Session-Objekt von der Steuerung zu einer Ansicht Vorlage passieren

$ this-> Sitzung-> schreiben ('Person.eyeColor', 'Benutzername'); $ green = $ this-> Sitzung-> lesen ('Person.eyeColor'); $ this-> set ('Benutzername', $ grün);

Dies wird Ihnen, wie Sie

-1

Benutzer diese in Ihnen vor Filter App Controller

2

es Sie in einem Helfer verwenden möchten, geben führen müssen daran denken, es in Ihrem $ Helfer Erklärung enthalten:

class Foo extends AppHelper 
{ 
    var $helpers = array('Session','Bar'); 
5

Sie $this->Session->read('myParam') in Ihren Ansichten verwenden können Dateien.
Aber Sie können $this->Session->write('myParam') nicht verwenden.

Wie bereits erwähnt here:

Der wesentliche Unterschied zwischen der Session Helper und der Session Komponente ist, dass die Helfer nicht die Fähigkeit, die Sitzung zu schreiben haben.

Verwandte Themen