我正试图在laravel上将成功信息发回我的主页。
return redirect()->back()->withSuccess('IT WORKS!');
由于某种原因,变量$ success在运行此代码后没有获得任何值。
我用来显示成功消息的代码:
@if (!empty($success))
<h1>{{$success}}</h1>
@endif
我已将家庭和简报页面添加到routes.php中的Web中间件组,如下所示:
Route::group(['middleware' => 'web'], function () {
Route::auth();
Route::get('/', function () {
return view('home');
});
Route::post('/newsletter/subscribe','NewsletterController@subscribe');
});
有没有人知道为什么这似乎不起作用?
答案 0 :(得分:74)
您应该从web
中删除routes.php
中间件。手动添加web
中间件会导致session and request related problems in Laravel 5.2.27 and higher。
如果它没有帮助(仍然保留routes.php
没有网络中间件),你可以尝试一些不同的方法:
return redirect()->back()->with('message', 'IT WORKS!');
显示消息是否存在:
@if(session()->has('message'))
<div class="alert alert-success">
{{ session()->get('message') }}
</div>
@endif
答案 1 :(得分:18)
你可以用这个:
return redirect()->back()->withSuccess('IT WORKS!');
并在您的视图中使用此内容:
@if(session('success'))
<h1>{{session('success')}}</h1>
@endif
答案 2 :(得分:3)
以上所有内容都是正确的,但请尝试直接单行:
{{session()->has('message') ? session()->get('message') : ''}}
答案 3 :(得分:3)
一种方法是在会话中发送消息,如下所示:
<强>控制器:强>
return redirect()->back()->with('success', 'IT WORKS!');
查看强>:
@if (session()->has('success'))
<h1>{{ session('success') }}</h1>
@endif
其他方法是创建会话并直接将文本放在视图中:
<强>控制器强>:
return redirect()->back()->with('success', true);
查看强>:
@if (session()->has('success'))
<h1>IT WORKS!</h1>
@endif
您可以在此处查看完整文档:Redirecting With Flashed Session Data
我希望这是非常有帮助的,问候。
答案 4 :(得分:3)
您只需使用back()
函数即可进行重定向,而无需使用redirect()->back()
,请确保您使用的是5.2或更高版本的5.2。
您可以将代码替换为以下代码。
return back()->with('message', 'WORKS!');
在视图文件中,替换以下代码。
@if(session()->has('message'))
<div class="alert alert-success">
{{ session()->get('message') }}
</div>
@endif
有关更多详细信息,您可以阅读here
back()
只是一个辅助功能。它的作用与redirect()->back()
答案 5 :(得分:2)
控制器:
return redirect()->route('subscriptions.index')->withSuccess(['Success Message here!']);
刀片
@if (session()->has('success'))
<div class="alert alert-success">
@if(is_array(session()->get('success')))
<ul>
@foreach (session()->get('success') as $message)
<li>{{ $message }}</li>
@endforeach
</ul>
@else
{{ session()->get('success') }}
@endif
</div>
@endif
您始终可以将此零件另存为单独的刀片文件,并轻松包含它。 例如:
<div class="row">
<div class="col-md-6">
@include('admin.system.success')
<div class="box box-widget">
答案 6 :(得分:1)
在控制器中
return redirect()->route('company')->with('update', 'Content has been updated successfully!');
可见
@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
答案 7 :(得分:1)
您可以使用laravel MessageBag将我们自己的消息添加到现有消息中。
要使用MessageBag,您需要使用:
use Illuminate\Support\MessageBag;
在控制器中:
MessageBag $message_bag
$message_bag->add('message', trans('auth.confirmation-success'));
return redirect('login')->withSuccess($message_bag);
希望这会有所帮助。
答案 8 :(得分:0)
在控制器中:
`return redirect()->route('car.index')->withSuccess('Bein ajoute')`;
在视图中
@if(Session::get('success'))
<div class="alert alert-success">
{{session::get('success')}}
</div>
@endif