2016-06-23 73 views
2

は、私はこのようなlaravel 5検証を持っていますか?私はこのようなバリパッケージを使用することができます知っているフラッシュメッセージとLaravel検証とカスタム検証パラメータ

flash()->error('Validation Fails'); 

use Validator; 

$validation = Validator::make($request->all(), []); 

をしかし、私はせずに自分のコードをminimalizeしたい私は、このようにflashメッセージを設定することができlaracastフラッシュベンダーを使用しています"Validator;"を使用し、 "$ this-> validate()"機能でlaravel基本検証を使用してください。

そして、どのように私は必要な場合は、追加のセッションまたはパラメータを返すために、私はこのようにしてみてくださいしかし、私はできません:

$this->validate($request, [])->with('foo', 'bar'); 

それを行うには?

答えて

0

$this->validate()妥当性検査が失敗した場合は、セッション内で検証ルールを渡さなかったフィールドのすべてのエラーとエラーメッセージを元のURLに戻しますので、追加する必要はありませんセッションに何かをフラッシュする。ドキュメントに記載されているように:

したがって、受信リクエストパラメータが指定された検証ルールに合格しない場合はどうなりますか?前述のとおり、Laravelは自動的にユーザーを以前の場所にリダイレクトします。さらに、すべての検証エラーが自動的にセッションにフラッシュされます。

代わりに、エラーメッセージが表示されているかどうかを確認して、必要なテキストを出力することができます。ドキュメントで述べたようにあなたは、あなたのビューで$errors変数とエラーにアクセスすることができます。

を繰り返しますが、我々は明示的に私たちのGETルートのビューにエラーメッセージをバインドする必要がなかったことに気づきます。これは、Laravelがセッションデータ内のエラーをチェックし、利用可能な場合は自動的にビューにバインドするためです。 $ errors変数はIlluminate \ Support \ MessageBagのインスタンスになります。このオブジェクトの操作の詳細については、check out its documentationを参照してください。あなたは本当にあなたがロードするためにあなたのコントローラメソッドで$errors変数をチェックしてみてください可能性がセッションにデータをフラッシュする必要がある場合は

@if (count($errors) > 0) 
    <div class="alert alert-danger"> 
     Validation Fails 
    </div> 
@endif 

はたとえば、あなたのビューで次の操作を行うことができその値に基づいてデータをセッションに入れて表示します。これを試したことがないので、試してみる必要があります。サイドポイントとして

// method for loading the view 
public function index() 
{ 
    if(count($errors) > 0) { 
     session()->put('foo', 'bar'); 
    } 

    return view('my-form'); 
} 

はまた、あなたがあなたの代わりにForm Request Validationを使用することができます$this->validate()を使用する必要はありませんことを検討してください。また、一般的なアドバイスとして、検証の仕組みに関するドキュメントを検討する価値があります:https://laravel.com/docs/5.2/validation#introduction

希望に役立ちます!お使いのコントローラで

1

:ご使用のブレード・テンプレートで

$rules = array(
      'zipcode' => 'required', 
      'province' => 'required', 
      'address' => 'required', 
      'number' => 'required', 
      'phone' => 'required' 
    ); 

    $validator = Validator::make($request->all(), $rules); 

    if ($validator->fails()) 
    { 
     return Redirect::to('/url_form')->withInput()->withErrors($validator); 
    } 

@if($errors->has()) 
    @foreach ($errors->all() as $error) 
    <p class="yellow-text font lato-normal center">{{ $error }}</p> 
    @endforeach 
    @endif 

グッドラック!