2016-10-14 8 views
1

Ich habe eine Laravel-Anwendung, und etwas Seltsames passiert im Zusammenhang mit den Sitzungsvariablen. Ich habe eine Methode in einem Controller, der einige Eingaben überprüft und abhängig von einigen Bedingungen entscheidet, ob weiter geht oder einfach zurück (und genau hier, wo ist mein Problem), wenn ich return redirect()->back() mache Ich möchte so eine Variable senden, die ein Json ist, also kurz habe ich dies:Sitzungsvariable wird nicht in Laravel gesendet 5

$msg=json_encode([ 
    'status' => 'failed', 
    'field'=>'mail' 
]); 
return redirect()->back()->with('msg',$msg); 

Also, es ist sehr gut leitet, aber dann in der Ansicht habe ich:

@if (Session::has('msg')) 
    //come stuffs 
@endif 

aber es scheint, mag die msg Variable nicht übergeben wird. Laut der Laravel-Dokumentation, wenn man redirect back verwendet, sind die Variablen durch Session

+1

Ihre Zugriffsprotokoll beobachten. Dadurch werden die Daten nur für die nächste Anfrage blinkend angezeigt, und wenn die Seite, auf die Sie weiterleiten, auch irgendwo umgeleitet wird, werden Sie am Ende diese Daten verlieren. – user3158900

Antwort

0

Ich stieß auch auf dieses Problem in einem Projekt vor einer Weile mit Laravel 5.2. Ich weiß nicht, ob es ein Fehler ist oder ob es behoben wurde, aber ich bin damit umgegangen, indem ich redirect()->back() nicht benutzt habe. Ich denke, es könnte mit dem Caching-Mechanismus des Browsers zusammenhängen. Es würde mich interessieren, wenn Sie die Ursache finden.

+0

ja, es ist in Laravel 5.2 –

0

Ich glaube, Sie $request->session()->put('key', 'value'); verwenden müssen, bevor Sie die Umleitung

lesen Sie die Dokumentation bei HTTP Session

+0

ja, ich habe es bereits gemacht, aber es war das gleiche –

+0

könnten Sie etwas tun wie 'if (isset ($ Anfrage-> Sitzung() -> get ('Schlüssel'))) {}' – darham

+0

Ja, ich schrieb es direkt nach $ $ request-> session() -> put ('key', 'value'); 'und es existiert, aber dann in der Ansicht existiert es nicht mehr –

1

Seine Arbeits für mich einzuleiten, wenn ich getestet. Vielleicht speichert Ihre Sitzung keine Daten. Bitte überprüfen Sie, ob Ihre Sitzung funktioniert oder nicht. Meine getestet Ausgabe

@if (Session::has('msg')) 
     {{ session('msg') }} 
    @endif 

enter image description here

+0

ja, nur überprüfen, ist wahrscheinlich, dass das Problem ist, weil ich die Web-Middleware verwende –