2016-04-21 131 views
2

我对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'=>'[email protected]']); 

Route::post('something/toedit',['middleware' => 'auth', 'uses'=>'[email protected]']); 

而现在的问题是,这种代码在我看来不可能有返回结果。

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

而且{{COUNT($错误)}}这是等于0 但是,如果使用这样的代码:

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

它返回我的观点,即:

对象(Illuminate \ Support \ ViewErrorBag)#146(1){[“bags”:protected] => array(1){[“default”] => object(Illuminate \ Support \ MessageBag)#147(2){[ “message”:protected] => array(1){[“login”] => array(1){[0] => string(48)“登录可能不会超过10个字符RS“。 }} [“format”:protected] => string(8)“:message”}}}

有人可以帮助我访问刀片视图中$ errors变量的错误吗?我真的很困惑。

+0

尝试session() - > get('errors') – Abhishek

+0

它如何提供帮助? – Lukasin

+0

你为什么不尝试一次? – Abhishek

回答

0

$errors变量可以由中间件基团,其包括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

+0

'web'中间件自动适用于所有路线自5.2.27 –

+0

我认为这里没有问题。如你所说,我修改了我的路线,现在我没有任何错误会话。工匠告诉我,我现在已经是“网络”中间件。 – Lukasin

1

我有类似的问题上Laravel 5.2.41。在我的情况下,$ errors-> has()总是返回1,即使没有错误。

找到了解决办法,从Laracasts: -

$errors->has() returns true since framework upgrade

更换$errors->has()$errors->any()$errors->count() > 0会做。