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】:

您可以在控制器中使用-&gt;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 消息的最佳方式

第 245 行 ConnectionFactory.php 中的不同错误 - Laravel 5.4

laravel 5.4 付款后注册

Laravel 5.4 推送错误

在 laravel 5.4 中测试文件上传时出错

Laravel 5.4 显示上传的图片问题