2016-04-29 15 views
0

Ich habe gerade von Version 4.2 auf Laravel 5.2 aktualisiert, um die neue Funktion des Frameworks auszuprobieren. Aber ich habe Probleme bei der Einstellung flash session Daten auf anderen Controller/Route gesendet werden.Laravel 5.2 Redirect mit Flash-Daten

Hier ist meine einfache Code:

Controller

<?php namespace App\Http\Controllers; 

use Session; 
use Illuminate\Http\Request; 

class ctest extends Controller { 

    public function page_a() { 
     return redirect('page_b')->with('verified', 'Go to page B'); 
    } 

    public function page_b(Request $request) { 
     dd(array(
      session()->has('verified'),    // Option a 
      $request->session()->get('verified') // Option b 
     )); 
    } 
} 

Route

// Old code 
// Route::get('/page_a', '[email protected]_a'); 
// Route::get('/page_b', '[email protected]_b'); 

// As pointed out by @rishal at the comment, 
// I tried using this group but I can't still get 
// the flash data. 
Route::group(['middleware' => ['web']], function() { 
    Route::get('/page_a', '[email protected]_a'); 
    Route::get('/page_b', '[email protected]_b'); 
}); 

Ergebnis auf page_b

array: [ 
    0 => false 
    1 => null 
] 

Ich kann nicht herausfinden, was damit nicht stimmt. Wann immer ich zu page_b umgeleitet wurde, enthält die Sitzung nur _token, nicht die verified Flashsitzungsdaten, die ich bereits auf page_a gesetzt habe.

PS: Ich bin zu speichern Sitzung mit Datenbank nicht

+0

haben Sie versucht, Ihre Route zu gruppieren Route :: Gruppe – rishal

+0

noch nicht. muss ich das tun? Warum? : D Entschuldigung. Ich bin neu zu 5.2 – Vainglory07

+0

Werfen Sie einen Blick auf diese http://stackoverflow.com/questions/34703696/session-variable-doesnt-persist-during-redirect-in-laravel?rq=1 – rishal

Antwort

1

erste Datei, die Sie benötigen, um Ihre Routen zu Gruppensitzung Variable zu erhalten, nachdem die Seite

Route::group(['middleware' => ['web']], function() { 
    Route::get('/page_a', '[email protected]_a'); 
    Route::get('/page_b', '[email protected]_b'); 
}); 

Nächste Umleitung Verwendung anfordern abrufen Sitzung

public function page_b(Request $request) { 
    if ($request->session()->has('verified')) 
     echo $request->session()->get('key'); 
} 

In Ihrem page_a diese Linie

erstellt keine Sitzungsvariablen, es erstellt $verified mit dem Wert von 'Gehe zu Seite B'.

Route::group(['middlewareGroups' => ['web']], function() { 
    Route::get('/page_a', '[email protected]_a'); 
    Route::get('/page_b', '[email protected]_b'); 
}); 

this helps: Stattdessen können Sie Session-Variablen mit

$request->session()->put('key', 'value'); 
+0

Entschuldigung, ich habe vergessen, zu meiner Frage hinzuzufügen, dass ich Datenbank zum Speichern von Sitzungen und nicht Datei verwenden. Beeinflusst es das Verhalten? – Vainglory07

+0

was meinst du beeinflusst das Verhalten? Funktioniert es oder nicht? – rishal

+0

es funktioniert nicht – Vainglory07

1

Versuchen Sie ersetzen 'Middleware' mit 'middlewareGroups', wie diese erstellt!