【问题标题】:Access the errors in Laravel访问 Laravel 中的错误
【发布时间】:2018-11-20 02:10:51
【问题描述】:

对于名为/home 的路由,我有以下函数:

public function home(){
  if(Session::has("user_id")){
        return view("home");
    }else{
        return view("welcome", [
            'error_message' => "Please log in to access that page!"
        ]);
    }
}

然后,在我的welcome 视图中,我会显示如下错误:

<div class="alert alert-danger alert-dismissible fade show" role="alert">
<p> {{ $error_message }} </p>
</div>

一切都按预期工作,但当我一次又一次刷新页面时,错误继续显示。我知道变量不是unset,所以它正在发生。但是,真正的问题是:

我不能使用 Laravel 的 MessageBag 实例做同样的事情吗?

在表单验证期间,如果发生错误,则错误会显示出来,如果我刷新页面,它就会消失。那么,我不能使用该方法在我的页面中带来相同的行为吗?

【问题讨论】:

    标签: php validation laravel-5.2


    【解决方案1】:

    示例 1

    设置错误使用

    return redirect()->back()->withErrors('my message');
    

    访问刀片使用中的错误

    @if ($errors->any())
    <div class="alert alert-danger">
        <ul class="mb-0">
            @foreach($errors->all() as $error)
                <li>{!! $error !!}</li>
            @endforeach
        </ul>
    </div>
    @endif
    

    是的,使用重定向而不是在同一条路线上返回不同的视图,因为它更清晰。

    示例 2 但是,如果您想以艰苦的方式学习它,请像这样设置警报

    session()->flash('alert', 'your message');
    

    然后像这样访问它

    <div class="alert alert-success"> {{ session('alert') }}</div>
    

    示例 3

    如果你想使用 MessageBag,你只需要抛出一个特殊的异常

    throw ValidationException::withMessages([
                'message' => ['my message here'],
            ])->status(400);
    

    并按照示例 1 所示访问它

    【讨论】:

    • 谢谢!这正是我所需要的!
    【解决方案2】:

    你可以这样做

    public function home(){
        if(Session::has("user_id")){
           return view("home");
        }else{
           return view("welcome")->with('error_message', 'Please log in to access the page');
        }
    }
    

    @if(!empty($error_message))
      <div class="alert alert-success"> {{ $error_message }}</div>
    @endif
    

    【讨论】:

    • 感谢您的回答。是的,这是一个不清楚的问题,我也注意到与您的答案相同的问题,但后来我进一步阅读,结果发现该成员想要使用 MessageBag。 :)
    猜你喜欢
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2021-08-13
    • 2014-01-07
    • 1970-01-01
    • 2017-04-16
    • 2014-06-01
    • 2016-08-02
    相关资源
    最近更新 更多