學習laravel所遇問題:Undefined variable: errors

問題:Undefined variable: errors (View: C:\wamp\www\StuLaravel5\resources\views\login.blade.php)php

login.blade.php代碼:html

@section('content')
<div class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="panel panel-default">
                <div class="panel-heading">登錄</div>
                <div class="panel-body">
                    <form class="form-horizontal" role="form" method="POST" action="{{ url('/login') }}">
                        {!! csrf_field() !!}

                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">郵 箱</label>

                            <div class="col-md-6">
                                <input type="email" class="form-control" name="email" value="{{ old('email') }}">

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label class="col-md-4 control-label">密 碼</label>

                            <div class="col-md-6">
                                <input type="password" class="form-control" name="password">

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <div class="checkbox">
                                    <label>
                                        <input type="checkbox" name="remember"> 記住我
                                    </label>
                                </div>
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    <i class="fa fa-btn fa-sign-in"></i>登錄
                                </button>

                                <a class="btn btn-link" href="{{ url('/password/reset') }}">忘記密碼</a>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

發現:laravel

若是請求輸入參數沒有經過給定驗證規則怎麼辦?正如前面所提到的,Laravel將會自動將用戶重定向回上一個位置。此外,全部驗證錯誤信息會自動一次性存放到session
注意咱們並無在GET路由中明確綁定錯誤信息到視圖。這是由於Laravel老是從session數據中檢查錯誤信息,並且若是有的話會自動將其綁定到視圖。因此,值得注意的是每次請求的全部視圖中老是存在一個$errors變量,從而容許你在視圖中方便而又安全地使用。$errors變量是的一個Illuminate\Support\MessageBag實例。想要了解更多關於該對象的信息,查看其文檔web

注意:$errors變量會經過web中間件組中的Illuminate\View\Middleware\ShareErrorsFromSession中間件綁定到視圖,若是使用了該中間件,那麼$errors變量在視圖中老是有效,從而方便你隨時使用。api

解決辦法:安全

在使用$error時須要用到中間件:session

\Illuminate\Session\Middleware\StartSession::class,post

\Illuminate\View\Middleware\ShareErrorsFromSession::class,url

此時在Kernel中註冊中間件Kernel.php,使用了laravel定義中間件組webspa

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],
        'api' => [
            'throttle:60,1',
        ],
    ];

routes.php

Route::group(['middleware' => 'web'], function () {
    Route::get('login', ['middleware' => 'guest', 'as' => 'login', 'uses' => 'loginController@loginGet']);
Route::post('login', ['middleware' => 'guest', 'uses' => 'loginController@loginPost']);
Route::get('logout', ['middleware' => 'auth', 'as' => 'logout', 'uses' => 'loginController@logout']);
});
相關文章
相關標籤/搜索