Frage

kann jemand mir ein Beispiel geben, wie Sessions erstellen und Schreiben von Daten zu. Ich habe Syntax gesehen wie die Daten zu einer Sitzung Befehl schreiben zu schreiben. Aber wie eine Sitzung erstellen und die Werte darin abgerufen werden.

In meiner Anwendung, ich habe zwei Daten, form_id und user_id, die in allen Seitenanforderungen verwendet werden muss. So wie ich es als eine Session-Variable speichern und über die Anwendung benutzen?

Bearbeiten

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 all meiner Ansicht nach Dateien, weil in allen Seitenanforderungen auch ich die userId passieren?

EDIT 2

Ich habe 2 Controller, Benutzer und Form. Ich schreibe den Benutzer-ID zu einer Sitzungsvariablen in dem Benutzer _controller. Ich habe eine Ansicht Datei namens homepage.ctp, deren Wirkung in der forms_controller. Nun, wie kann ich das Session-Variable in dem users_controller in der Homepage definiert benutzen? Sorry, wenn ich frage dumme Fragen. Ich ging durch die cakebook, aber meine Zweifel wurden nicht gelöscht. Ich bin auch Versuch und Irrtum-Methode der Codierung versuchen, so wenden Sie sich bitte helfen Sie mir.

EDIT 3

Ich habe ein Session-Variable ‚uid‘, 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 Gestaltung Aktionsmethode des gleichen Controller. Wenn ich gebe

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

Der Wert wird nicht wiederholt.

Kann ich nicht verwenden, um das Session-Variable in demselben Controller?

War es hilfreich?

Lösung 5

fand ich den Grund, warum wurde die uid nicht (edit 3 Teil der Frage) hallte werden. Es ist aufgrund eines dummen Fehler, einen weißen Raum nach dem Ende-Tag hatte?> In der Steuerung. Nun ist es gut funktioniert.

Andere Tipps

Die Bäckerei ist Ihr bester Freund:

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

Alle Ihre Sitzung Lese- / Schreibvorgänge gehören in der Steuerung:

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

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

In Kuchen php können Sie erstellen Sitzung wie folgt:

$this->request->session()->write('user_id', 10);

und Sie können lesen Sitzungswert wie folgt:

echo $this->request->session()->read('user_id');

Super einfach!

Sie müssen keinen Code schreiben Sitzung zu erstellen, sind sie bereits eingebaut. Dann einfach Sie die Lese verwenden und Sitzungen schreiben, wie oben erwähnt. siehe auch hier für weitere Informationen:

http://book.cakephp.org/2.0 /en/core-libraries/components/sessions.html Verwenden in dem Controller

http://book.cakephp.org/2.0 /en/core-libraries/helpers/session.html Verwendet in den Ansichten

In diesem Fall wäre es:

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

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

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

Beim Lesen der entsprechenden Kochbuch Seiten langsam und vorsichtig in der Regel hilft viel ...

, wenn ich seltsame Sitzung Verhalten habe, und das mir helfen.

MODELL:

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

`

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top