2016-04-29 6 views
0

Ziemlich grundlegende Dinge gehen. Verwenden von Session Flash Nachrichten, um alle Erfolgs-/Fehlermeldungen anzuzeigen.Session-Flash funktioniert nicht, Put tut [L5.2]

Alle Routen sind in meiner 'middleware' => 'web' Gruppe eingerichtet.

Jetzt mein Problem. ->flash() funktioniert nicht, während ->put() tut.

Controller:

$request->session()->flash('alert-success', 'My flash message'); 

Blade:

@foreach (['danger', 'warning', 'success', 'info'] as $msg) 
    @if(Session::has('alert-' . $msg)) 
     <p class="alert alert-{{ $msg }}">{{ Session::get('alert-' . $msg) }} <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
     </p> 
    @endif 
@endforeach 

Die return redirect('routeHere')->with('alert-success', 'My flash message'); im Laravel 5 docs angegeben funktioniert auch nicht.

bearbeiten

Laravel 5.2 Session flash not working even with web middleware Vervielfältigung. Die Verwendung von ['middlewareGroups' => 'web'] anstelle von ['middleware' => 'web'] behebt das Problem, aber unter der Annahme, dass dies nicht der richtige Weg ist.

+1

Sind Sie sicher, dass Sie es in der nächsten nächsten Anfrage verwenden möchten. Weil 'flash' nur für die nächste Anfrage funktioniert ... und wenn du diese Nachricht später in einer Anfrage bekommen willst, solltest du' put' verwenden. –

+0

Ja, das will ich. Das gleiche Problem hier: http://stackoverflow.com/questions/36279871/laravel-5-2-session-flash-not-working-even-with-web-middleware?rq=1 (mit 'MiddlewareGroups' anstelle von' Middleware 'funktioniert, aber ist nicht der Weg zu gehen, nehme ich an – Liam

+0

Könnten Sie in einer Ansicht ablegen:' {{dd ($ request-> session() -> all())}} ' –

Antwort

0

Nach der Suche nach Neugier für dieses Problem bemerkte ich ein interessantes Update für Laravel version >= 5.2.27, die standardmäßig die Web-Middleware-Gruppe auf alle in routes.php definierten Routen gilt.

Jetzt führt mich das zu der Annahme, dass durch das Deklarieren der Middleware ['middleware' => 'web'] dazu führen, dass der Code zweimal aufgerufen wird, wodurch die nicht persistenten Flash-Nachrichten gelöscht werden.

Eine Lösung basiert auf meiner Annahme wäre, einfach nicht nutzen:

Route::group(['middleware' => 'web'], function() { 
}); 

Dies ist, wo ich die Update-Informationen :) gefunden Laravel 5.2 Auth not Working

0

Try "web" Middleware in der Laravel zu entfernen 5.2 aus deiner routes.php Datei. So hilft mir