一、需求

Laravel 本身是否错误信息的 session 的 flash 的,并且文档也有说明,比如表单的验证:

但是有些时候我还需要显示不同类型的错误信息,或者不同等级。比如我需要 success/info/warning/danger 这几种 level 的错误信息。这个不能满足我的需求。

二、全局助手函数 flash_msg

自己写的全局助手函数主要是为了能够方便的按照自己的想法或者是需要的格式去缓存错误信息.关于如何创建全局助手函数,可以参照:

函数很简单:(举个最简单的例子)

function flash_msg($flag,$message){
    session()->flash('err_flash',true);
    session()->flash('err_flash_flag',$flag);
    session()->flash('err_flash_msg',$message);
}
  • err_flash 用于确认当前是否有需要通知的信息
  • err_flash_flag 用于存储通知的 level 或者类型,这里只有 true 和 false 两种用于表示 success 和 error
  • err_flash_msg 用于存储通知的信息

需要缓存的地方,在跳转前直接使用这个函数即可:

flash_msg(false,'登录失败,账户名或密码错误');

三、在 html 中使用

当拥有了闪存的 session 信息之后,就能够在模板中直接使用,并且可以使用一些插件或者自定义。

我使用的是 toastrhttps://codeseven.github.io/toastr/

引入js 和 css 之后,注意建议使用的位置是:common 的 blade 模板(基础模板)

在使用 blade 模板布局的时候,一般都有一个 base 的模板,因此只需要在 base 模板中使用一次即可

同样的需要结合 if 和 session 进行实现:

@if(session('err_flash'))
    @if(session('err_flash_flag'))
        <script>
            toastr.success("{{session('err_flash_msg')}}");
        </script>
    @else
        <script>
            toastr.error("{{session('err_flash_msg')}}");
        </script>
    @endif
@endif

四、效果:

TIM截图20180321225033.jpg