klokklok klokklok - 4 months ago 268
PHP Question

Laravel 5.2 redirect back with success message

I'm trying to get a success message back to my home page on laravel.

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


For some reason the variable $success doesn't get any value after running this code.

The code I'm using to display the succes message:

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


I have added the home and newsletter page to the web middleware group in routes.php like this:

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

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

Route::post('/newsletter/subscribe','NewsletterController@subscribe');
});


Does anyone have any idea why this doesn't seem to work?

Answer

You should remove web middleware from routes.php. Adding web middleware manually causes session and request related problems in Laravel 5.2.27 and higher.

If it didn't help (still, keep routes.php without web middleware), you can try little bit different approach:

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

Displaying message if it exists:

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