2014-07-23 12 views
5

Ich habe ein Problem mit der Sitzung, die nicht bestehen bleibt.Sitzung funktioniert nicht in Laravel 4

In Controller habe ich eine Funktion, die einen Artikel zur Bearbeitung

public function getEdit($id) 
{ 
    try { 
     $news = News::findOrFail($id); 
     View::share('title', Lang::get('admin.editNews').": ".$news->title); 
     View::share('news', $news); 
     $this->layout->content = View::make('news.editNews'); 
    } catch (Exception $e) { 
     Session::flash('message', Lang::get('admin.noSuchNews')); 
     Session::flash('notif', 'danger'); 
     return Redirect::to("news"); 
    } 
} 

Und ich habe eine andere Funktion lädt - Index, die diese Flash-Mitteilungen angezeigt werden sollen.

public function getIndex() 
{ 
    var_dump(Session::get('message')); 
} 

Sitzung ist einfach nicht persistent. Funktioniert nicht mit Session::flash, arbeitet nicht mit Session::put.

Session::get('message') ist nur immer null.

Ich glaube, ich sollte erwähnen, dass ich Anwendungs-Routing wie dies tat:

Route::controller('news', 'NewsController'); 
+0

Ist 'getEdit' wirklich vor' getIndex' genannt? –

+0

Ja. Ich weiß das, denn wenn 'News :: findOrFail ($ id)' nicht fehlschlägt, wird die Ansicht geladen, und wenn Nachrichten nicht gefunden werden, sollte es zu 'catch' gehen. Das funktioniert auch. Versuchte Echo '$ e-> getMessage()' –

+0

Haben Sie versucht, 'Redirect :: to ('Nachrichten') -> mit ('message', 'your_message');'? – Needpoule

Antwort

3

Ok, ich habe das behoben.

Das Ding ist, dass ich in session.php Datei gesetzt haben diese

'domain' => '.mydomain.com', 

Aber da App noch in localhost, alles mit Sitzung versagte, obwohl ich nicht cookie als meine Session-Treiber verwendet wurde.

Als ich dies änderte sich zu

'domain' => '', 

Alles begann

+0

Ich habe deine Lösung verfolgt. Aber nicht für mich arbeiten. – 2plus

0

Sie sollten die Session Einstellungen http://laravel.com/docs/session#session-drivers beschrieben überprüfen.

Der einfachste Weg ist die Verwendung von Cookies für Sitzungen (und stellen Sie sicher, dass Cookies in Ihrem Browser aktiviert sind). Wenn Sie file zum Speichern von Sitzungen verwenden, stellen Sie sicher, dass der in app/config/session.php definierte Speicherpfad beschreibbar ist.

+1

ich Datenbanktreiber und bin mit jeder Anforderung erstellt eine neue Zeile gibt. Einige Anfragen erstellen sogar zwei Zeilen in der Sitzungstabelle –

+1

Ja. Es ist beschreibbar. Aber immer noch nicht funktioniert. – 2plus

5

Überprüfen Sie den Rückgabe Zustand der Funktion arbeiten, um die Session in Ihrem Gerät einstellen. Stellen Sie sicher, dass es auch dann etwas zurückgibt, wenn es sich um eine einfache Null handelt.

Ich hatte gerade das gleiche Problem und das hat es gelöst. Ich konnte die folgenden verwenden gerade fein:

Route::get('session', function(){ 
    Session::put('current_user', 'Lionel Morrison'); 
    Session::put('user_id', '12345'); 

    var_dump(Session::all()); 
}); 

Route::get('get', function() { 
    var_dump(Session::all()); 
}); 

aber wenn ich es in einem Controller verwendet wie so hat es nicht funktioniert, bis ich eine Null zurückgegeben;

public function setsession() { 
    Session::put('cat', 'Tom'); 
    Session::put('mouse', 'Jerry'); 

    return null; 
} 

public function getsession() { 
    dd(Session::all()); 
} 
+1

Ich würde wirklich gerne wissen, warum das funktionieren würde? – Juddling

+0

Weiß nicht, aber es tut. –

+0

, die null zurückgab, tat es für mich! Vielen Dank –

2

Wenn Sie, dass Ihre Session finden nicht richtig speichern, versuchen Session::save() Aufruf explizit um es zu zwingen zu speichern.

0

Wenn Sie versucht werden, sich mit "Auth :: loginUsingId()" api anstelle von "Auth :: versuch()" api anzumelden, wird die Sitzung für eine andere Anfrage zerstört. Also ich empfehle Ihnen, verwenden Sie "Cookie" Treiber anstelle von "Datei" von session.php (config \ session.php \ driver)

0

für Laravel 4.2

goto app/config dir

bearbeiten app.php

'url' => 'localhost', 

bearbeiten session.php

'driver' => 'file', 
'cookie' => 'sitename_session', 
'domain' => null, 
'secure' => false,