2016-06-22 26 views
4

Laravel 5.2(Laravel Framework version 5.2.39)を実行している新しいサイトがあります。注:ルートファイルはWebミドルウェアグループを使用していないため、不要になってこの問題が発生する可能性があります。Laravel 5.2の検証エラー - エラーバッグが空になる

私はContactControllerstore法上の簡単な検証持っている:私は意図的に検証に失敗した場合

$this->validate($request, [ 
     'ContactFirst' => 'required|max:25', 
     'ContactLast' => 'required|max:25', 
     'ContactRole' => 'required|max:25', 
     'ContactEmail' => 'email|max:255', 
     'ContactPhone' => 'max:255', 
    ]); 

を、サイトには、フォームに戻ってリダイレクトしますが、エラーのバッグはとてもエラーは空ではありません情報が提供されます。フォームビューで

は(resources/contacts/new.blade.php)Iは、ドキュメントから次のコードと同様にダンプ入れ:

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

ページ(Iが言ったように)を形成するバックリダイレクトし、入力が取り込まれます。しかし$errorsは空であり、メッセージは出力されません:あなたのコードが可能であるならば、それはエラーで戻って返すことを示して正確なコードがないため

object(Illuminate\Support\ViewErrorBag)[285] 
protected 'bags' => 
array (size=0) 
    empty 
+0

あなたは 'web'ミドルウェアを使用していないことを確信していますか(私はそれがあなたの質問の初めにあったものだと思います)。 – TiagoRL

+0

@ TiagoRL--はい、 'web'ミドルウェアは' routes.php'には適用されていません – user101289

答えて

3

これは、ホームステッドの類似サイトの複数のバージョンを実行しているときのエラーと関連しているようです。ボックスを破棄して再構築することで問題は解決しました。

3

実は私は、知りません。

私は$validator->fails()で妥当性チェックを使用しています。

チェックこの例:

$validator = Validator::make($request->all(), [ 
    'ContactFirst' => 'required|max:25', 
    'ContactLast' => 'required|max:25', 
    'ContactRole' => 'required|max:25', 
    'ContactEmail' => 'email|max:255', 
    'ContactPhone' => 'max:255', 
]); 

if ($validator->fails()) { 
    return redirect()->back()->withErrors($validator)->withInput(); 
} 




しかし、私はRequestクラスを拡張ContactFormRequestクラスを作成し、店舗の引数にそれを置くためにあなたをお勧めします(スクリーンショット:http://joxi.ru/eAO55BF4glwRmo):

<?php namespace App\Http\Requests; 

class ContactFormRequest extends Request { 

    public function rules() { 
     return [ 
      'ContactFirst' => 'required|max:25', 
      'ContactLast' => 'required|max:25', 
      'ContactRole' => 'required|max:25', 
      'ContactEmail' => 'email|max:255', 
      'ContactPhone' => 'max:255', 
     ]; 
    } 
} 

とし、あなたのコントローラstoreのようにしてください:

public function store(ContactFormRequest $request) { 
    // here write code as if validation is valid 
} 

この操作の後にあなたはまだエラーがそれほど入れ得ることができない場合:

<?php var_dump(get_defined_vars()) ?> 

{{var_dump($errors)}}

+0

@ num8er--これは古い方法だと思います。私はここに書かれているように新しい構文を使用しています:https://laravel.com/docs/master/validation#quick-writing-the-validation-logic – user101289

+0

@ user101289古い方法は古典的で予測可能です。しかし、私たちが新しい方法を主張するならば、カスタムリクエストクラスを書いてみましょう。そして、検証ルールはコントローラーアクションのメインロジックをガーベジしないので、アクションコードをきれいに保ちます。 – num8er

+0

@ num8er--私はあなたに同意します - 文書化された形式を使用しようとしていますが、なぜそれが正常に動作しないのかわかりません – user101289

0

前に、私は同じバージョンを使用しています。ここで私はエラーを表示するために何を使用しています。

@if($errors->any()) 
<ul class="alert alert-danger"> 
@foreach($errors->all() as $error) 
<li>{{$error}}</li> 
@endforeach 
</ul> 
@endif 
関連する問題