Laravel 5.4 以不同方式显示 flash 错误和成功消息
Posted
技术标签:
【中文标题】Laravel 5.4 以不同方式显示 flash 错误和成功消息【英文标题】:Laravel 5.4 Show flash error and success messages in different ways 【发布时间】:2017-08-14 23:51:10 【问题描述】:来自我的 PostController 的方法
public function store(PostRequest $request)
if (Post::create($request->all()))
$request->session()->flash('status', 'Post was successfully added!');
else
$request->session()->flash('status', 'Error!');
return redirect('/');
索引视图
<?php if(session()->has('status'))
echo '<div style="text-align: center">';
echo session()->get('status');
echo '</div>';
?>
如何以不同的方式显示错误和成功消息?
【问题讨论】:
【参考方案1】:你可以这样使用:
public function store(PostRequest $request)
if (Post::create($request->all()))
$request->session()->flash('message.level', 'success');
$request->session()->flash('message.content', 'Post was successfully added!');
else
$request->session()->flash('message.level', 'danger');
$request->session()->flash('message.content', 'Error!');
return redirect('/');
在您的刀片文件中:
@if(session()->has('message.level'))
<div class="alert alert- session('message.level') ">
!! session('message.content') !!
</div>
@endif
上面的代码使用bootstrap's alert css classes 进行样式化,灵感来自Jeffrey Way's Laracasts Flash package
【讨论】:
对我来说非常非常非常好的答案,非常感谢先生。段【参考方案2】:你可以用这种方式显示闪信息:
在您的控制器中:
$request->session()->flash('success', 'Record successfully added!');
//OR
$request->session()->flash('warning', 'Record not added!');
在你看来:
@foreach (['danger', 'warning', 'success', 'info'] as $key)
@if(Session::has($key))
<p class="alert alert- $key "> Session::get($key) </p>
@endif
@endforeach
【讨论】:
【参考方案3】:在 Blade 模板中编写如下代码:
@if(Session::has('error'))
<p class="alert alert-danger"> Session::get('error') </p>
@endif
在控制器中编写如下代码:
Session::flash('error', 'Some thing is wrong. Please try again');
Redirect::to(path to blade file route);
【讨论】:
【参考方案4】:您可以在控制器中使用->with()
public function store(PostRequest $request)
if (!Post::create($request->all()))
return redirect('/')->with('error', 'Error!');
return redirect('/')->with('success', 'Post was successfully added!');
您的视图可能如下所示:
@if (session('success'))
<div class="alert alert-success">
session('success')
</div>
@endif
@if (session('error'))
<div class="alert alert-danger">
session('error')
</div>
@endif
或(为alert-error
类添加额外的CSS):
@foreach (['error', 'success'] as $status)
@if(Session::has($status))
<p class="alert alert-$status"> Session::get($status) </p>
@endif
@endforeach
【讨论】:
以上是关于Laravel 5.4 以不同方式显示 flash 错误和成功消息的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 中,在 session 中传递不同类型的 flash 消息的最佳方式