访问Laravel中的错误

时间:2018-11-20 02:10:51

标签: php validation laravel-5.2

对于名为/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实例不能做同样的事情吗?

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

2 个答案:

答案 0 :(得分:0)

您可以这样做

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

答案 1 :(得分:0)

示例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所示进行访问