【问题标题】:Laravel 5.4 Show flash error and success messages in different waysLaravel 5.4 以不同方式显示 flash 错误和成功消息
【发布时间】: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>';
    }?>

如何以不同的方式显示错误和成功消息?

【问题讨论】:

    标签: laravel


    【解决方案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】:
      1. 在 Blade 模板中编写如下代码:

        @if(Session::has('error'))
            <p class="alert alert-danger">{{ Session::get('error') }}</p>
        @endif
        
      2. 在控制器中编写如下代码:

        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
        

        【讨论】:

          猜你喜欢
          • 2016-12-14
          • 2018-11-05
          • 2021-03-02
          • 2016-02-15
          • 2021-08-17
          • 2019-10-14
          • 1970-01-01
          • 1970-01-01
          • 2021-01-27
          相关资源
          最近更新 更多