Reputation: 1041
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?
Upvotes: 71
Views: 254573
Reputation: 775
in Controller:
`return redirect()->route('car.index')->withSuccess('Bein ajoute')`;
In view
@if(Session::get('success'))
<div class="alert alert-success">
{{session::get('success')}}
</div>
@endif
Upvotes: 3
Reputation: 439
Controller:
return redirect()->route('subscriptions.index')->withSuccess(['Success Message here!']);
Blade
@if (session()->has('success'))
<div class="alert alert-success">
@if(is_array(session('success')))
<ul>
@foreach (session('success') as $message)
<li>{{ $message }}</li>
@endforeach
</ul>
@else
{{ session('success') }}
@endif
</div>
@endif
You can always save this part as separate blade file and include it easily. fore example:
<div class="row">
<div class="col-md-6">
@include('admin.system.success')
<div class="box box-widget">
Upvotes: 16
Reputation: 3261
You can simply use back()
function to redirect no need to use redirect()->back()
make sure you are using 5.2 or greater than 5.2 version.
You can replace your code to below code.
return back()->with('message', 'WORKS!');
In the view file replace below code.
@if(session()->has('message'))
<div class="alert alert-success">
{{ session()->get('message') }}
</div>
@endif
For more detail, you can read here
back()
is just a helper function. It's doing the same thing as redirect()->back()
Upvotes: 8
Reputation: 967
You can use laravel MessageBag to add our own messages to existing messages.
To use MessageBag you need to use:
use Illuminate\Support\MessageBag;
In the controller:
MessageBag $message_bag
$message_bag->add('message', trans('auth.confirmation-success'));
return redirect('login')->withSuccess($message_bag);
Hope it will help some one.
Upvotes: 2
Reputation: 99
In Controller
return redirect()->route('company')->with('update', 'Content has been updated successfully!');
In view
@if (session('update'))
<div class="alert alert-success alert-dismissable custom-success-box" style="margin: 15px;">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong> {{ session('update') }} </strong>
</div>
@endif
Upvotes: 4
Reputation: 4425
One way to do that is sending the message in the session like this:
Controller:
return redirect()->back()->with('success', 'IT WORKS!');
View:
@if (session()->has('success'))
<h1>{{ session('success') }}</h1>
@endif
And other way to do that is just creating the session and put the text in the view directly:
Controller:
return redirect()->back()->with('success', true);
View:
@if (session()->has('success'))
<h1>IT WORKS!</h1>
@endif
You can check the full documentation here: Redirecting With Flashed Session Data
I hope it is very helpful, regards.
Upvotes: 6
Reputation: 71
All of the above are correct, but try this straight one-liner:
{{session()->has('message') ? session()->get('message') : ''}}
Upvotes: 4
Reputation: 2913
you can use this :
return redirect()->back()->withSuccess('IT WORKS!');
and use this in your view :
@if(session('success'))
<h1>{{session('success')}}</h1>
@endif
Upvotes: 37
Reputation: 163748
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
Upvotes: 160