Heim > Backend-Entwicklung > PHP-Tutorial > 学习laravel所遇坑

学习laravel所遇坑

WBOY
Freigeben: 2016-06-23 13:15:28
Original
872 Leute haben es durchsucht

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

login.blade.php代码:

@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
Nach dem Login kopieren

发现:

如果请求输入参数没有通过给定验证规则怎么办?正如前面所提到的,Laravel将会自动将用户重定向回上一个位置。此外,所有验证错误信息会自动一次性存放到session。
注意我们并没有在GET路由中明确绑定错误信息到视图。这是因为Laravel总是从session数据中检查错误信息,而且如果有的话会自动将其绑定到视图。所以,值得注意的是每次请求的所有视图中总是存在一个$errors变量,从而允许你在视图中方便而又安全地使用。$errors变量是的一个Illuminate\Support\MessageBag实例。想要了解更多关于该对象的信息,查看其文档。

注意:$errors变量会通过web中间件组中的Illuminate\View\Middleware\ShareErrorsFromSession中间件绑定到视图,如果使用了该中间件,那么$errors变量在视图中总是有效,从而方便你随时使用。

解决办法:

在使用$error时需要用到中间件:

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

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

此时在Kernel中注册中间件Kernel.php,使用了laravel定义中间件组web

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',        ],    ];
Nach dem Login kopieren

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']);});
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage