2016-05-22 21 views
17

Próbuję uzyskać komunikat o powrocie z powrotem na moją stronę główną w serwisie laravel.Przekierowanie Laravel 5.2 z komunikatem o powodzeniu

return redirect()->back()->withSuccess('IT WORKS!'); 

Z jakiegoś powodu zmienna $ success nie otrzymuje żadnej wartości po uruchomieniu tego kodu.

Kod używam, aby wyświetlić komunikat Succes:

@if (!empty($success)) 
    <h1>{{$success}}</h1> 
@endif 

Dodałem stronę główną i biuletynu do grupy internetowej middleware w routes.php tak:

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

    Route::get('/', function() { 
     return view('home'); 
    }); 

    Route::post('/newsletter/subscribe','[email protected]'); 
}); 

Czy ktoś ma jakiś pomysł, dlaczego to nie działa?

Odpowiedz

40

Powinieneś usunąć oprogramowanie pośrednie web z routes.php. Ręczne dodawanie oprogramowania pośredniego web powoduje session and request related problems in Laravel 5.2.27 and higher.

Jeśli to nie pomogło (nadal zachować routes.php bez internetową middleware), można spróbować trochę innego podejścia:

return redirect()->back()->with('message', 'IT WORKS!'); 

Wyświetlanie wiadomości, jeśli istnieje:

@if(session()->has('message')) 
    <div class="alert alert-success"> 
     {{ session()->get('message') }} 
    </div> 
@endif 
+0

Dobrze wiedzieć, że nie jest już potrzebny. Ale po usunięciu 'Route :: group (['middleware' => 'web'], function() {' from my routes.php zmienna '$ success' nadal wydaje się pusta, więc nie wydaje się być problem tutaj – klokklok

+0

Proszę sprawdzić zaktualizowaną odpowiedź –

+0

Nie działa Po prostu nie wydaje przekazać wiadomość przez to pozostaje pusta – klokklok

4

można użyj tego:

return redirect()->back()->withSuccess('IT WORKS!'); 

i użyj tego w swoim widoku:

@if(session('success')) 
    <h1>{{session('success')}}</h1> 
@endif 
Powiązane problemy