2009-07-07 2 views
8

kann mir jemand ein Beispiel geben, wie man Sitzungen erstellt und Daten darauf schreibt. Ich habe gesehen, wie man mit dem Schreibbefehl Daten in eine Sitzung schreibt. Aber wie man eine Sitzung erstellt und die Werte darin abruft.Wie erstelle, schreibe und lese ich Sitzungsdaten in CakePHP?

In meiner Anwendung habe ich zwei Daten, form_id und user_id, die in allen Seitenanforderungen verwendet werden müssen. Wie kann ich es als Sitzungsvariable speichern und in der gesamten Anwendung verwenden?

EDIT

function register() 
{ 
    $userId=$this->User->registerUser($this->data); 
    $this->Session->write('User.UserId',$userId); 
    //echo "session".$this->Session->read('User.UserId'); 
    $this->User->data=$this->data; 
    if (!$this->User->validates()) 
    { 
    $this->Flash('Please enter valid inputs','/forms'); 
     return; 
    } 

$this->Flash('User account created','/forms/homepage/'.$userId);    

} 

Wie das Session-Variable verwenden 'User.UserId' statt $ userId in $ this-> Flash ('User Account erstellt', '/ forms/Homepage/'. $ userId);

Und kann ich diese Variable in allen meinen Ansichtsdateien verwenden, weil ich bei allen Seitenanforderungen auch die userId übergebe?

EDIT 2

Ich habe 2-Controller, Benutzer und Form. Ich schreibe die Benutzer-ID in eine Sitzungsvariable in den Benutzern _controller. Ich habe eine Ansichtsdatei namens homepage.ctp, deren Aktion im forms_controller ist. Wie kann ich nun die Sitzungsvariable verwenden, die im user_controller in der Homepage definiert ist? Entschuldigung, wenn ich dumme Fragen stelle. Ich ging durch das Kuchenbuch, aber meine Zweifel wurden nicht geklärt. Ich versuche auch Versuch und Irrtum Methode der Codierung, also bitte helfen Sie mir.

EDIT 3

ich eine Session-Variable 'uid' haben, die der Benutzer-ID in der Homepage Aktion eines Controllers ist.

 $this->Session->write('uid',$this->data['Form']['created_by']); 

Ich brauche die gleiche Variable in der Design-Action-Methode des gleichen Controllers. Wenn ich geben

   $uid=$this->Session->read('uid'); 
      echo "uid: ".$uid; 

der Wert wird nicht wiederholt.

Kann ich die Sitzungsvariable nicht in demselben Controller verwenden?

Antwort

0

ich den Grund gefunden, warum die uid nicht hallte wurde (edit 3 Teil der Frage). Es liegt an einem dummen Fehler, hatte ein Leerzeichen nach dem End-Tag?> In der Steuerung. Jetzt funktioniert es gut.

7

Die Bäckerei ist Ihr bester Freund:

http://book.cakephp.org/view/398/Methods

Alle Ihre Sitzung Lese-/schreibt, gehören in den Controller:

$this->Session->write('Person.eyeColor', 'Green'); 

echo $this->Session->read('Person.eyeColor'); // Green 
+0

kurz und süß-Code und arbeitet für alle Versionen :) –

0

In diesem Fall wäre es:

$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId')); 

und Ihre zweite Frage ist anwered durch Jason Miy (http://api.cakephp.org/class/session-helper). Sie können diese einfach in Ihrer Ansicht verwenden:

$userId = $session->read('User.UserId'); 

die entsprechenden Kochbuch Seiten langsam lesen und sorgfältig in der Regel hilft viel ...

+0

Ich habe 2 Controller, Benutzer und Formular. Ich schreibe die Benutzer-ID in eine Session-Variable in der Benutzer-Controller. Ich habe eine Ansichtsdatei namens homepage.ctp, deren Aktion im forms_controller ist. Wie kann ich nun die Sitzungsvariable verwenden, die im user_controller in der Homepage definiert wurde? Entschuldigung, wenn ich dumme Fragen stelle. Ich ging durch das Kuchenbuch, aber meine Zweifel wurden nicht geklärt. Ich versuche auch Versuch und Irrtum Methode der Codierung, also bitte helfen Sie mir. – Angeline

+0

Wie bereits erwähnt, können Sie den SessionHelper in Ihren Ansichten verwenden. Siehe http://book.cakephp.org/view/484/Session und http://book.cakephp.org/view/567/Methods –

0

wenn ich seltsames Sitzungsverhalten habe, und das hilft mir.

MODELL:

function clearAllDBCache() { 
    $db =& ConnectionManager::getDataSource($this->useDbConfig); 
    $db->_queryCache = array(); 
    } 

`

0

Acess Ihr Helfer SessionHelper in lib/Cake/View/Helper/SessionHelper.php und fügen Sie die Methode:

public function write($name = null) { 
    return CakeSession::write($name); 
}