拉拉维尔 5.2.29 刀片中的空$errors


Laravel 5.2.29 empty $errors in blade

我对标题所说的Laravel有问题。我的代码:

控制器中的功能:

$validator = Validator::make($request->all(), [
        'login' => 'required|max:10',
        'katalog' => 'required',
        'limitip' => 'required|ip',
    ]);
    if($validator->fails()){
        return redirect('something/toedit/someone')->withErrors($validator)->withInput();
    }
    else{
        echo "Clear.";
    }

和路线:

Route::get('something/toedit/{login}',['middleware' => 'auth', 'uses'=>'MyController@editAccountGet']);
Route::post('something/toedit',['middleware' => 'auth', 'uses'=>'MyController@editAccountPost']);

现在的问题是,在我看来,这段代码总是不返回任何内容。

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

另外 {{count($errors)}} 它等于 0。但是如果我使用这样的代码:

@if (Session::has('errors'))
    {{var_dump(Session::get('errors'))}}
@endif

在我看来,它又回来了:

object(Illuminate''Support''ViewErrorBag)#146 (1) { ["bags":p rotected]=> array(1) { ["default"]=> object(Illuminate''Support''MessageBag)#147 (2) { ["messages":p rotected]=> array(1) { ["login"]=> array(1) { [0]=> string

(48) "登录名不能大于 10 个字符。" } } ["format":p rotected]=> string(8) ":message" } } }

有人可以帮助我访问边栏选项卡中变量$errors错误吗?我在这里真的很困惑。

我在 Laravel 5.2.41 上遇到了类似的问题。就我而言,$errors->has() 总是返回 1,即使没有错误。

从Laracasts找到了解决方案:-

$errors->has() 自框架升级以来返回 true

$errors->has()替换为$errors->any()$errors->count() > 0就可以了。

$errors变量可以由 Web 中间件组添加,其中包括 ShareErrorsFromSession。您可以通过几种不同的方式将其应用于您的路线:

// Apply to a single route
Route::get('/', ['middleware' => ['auth', 'web'], function () {
    //
}]);
// To a group of routes
Route::group(['middleware' => ['auth', 'web']], function () {
    Route::get(...);
    Route::post(...);
});

请参阅 https://laravel.com/docs/5.2/middleware#assigning-middleware-to-routes