Laravel 5.2.29在刀片

时间:2016-04-21 11:45:13

标签: php forms laravel session laravel-5.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'=>'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){[&#34; bags&#34;:protected] =&gt; array(1){[&#34;默认&#34;] =&gt;对象(Illuminate \ Support \ MessageBag)#147(2){[&#34; messages&#34;:protected] =&gt; array(1){[&#34; login&#34;] =&gt; array(1){[0] =&gt; string(48)&#34;登录名不得超过10个字符。&#34; }&#34;格式&#34;:protected] =&gt; string(8)&#34;:message&#34; }}

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

2 个答案:

答案 0 :(得分:1)

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

从Laracasts找到解决方案: -

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

$errors->has()替换为$errors->any()$errors->count() > 0即可。

答案 1 :(得分: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