2013-12-19 13 views
5

laravelでは、ユーザーからの入力を検証するために、Validatorクラスを使用できます。電子メールによる登録のために例えばlaravelでの検証規則の動作方法

、検証ルールを指定できます電子メールが必要になると言う

array('email' => 'required|email|unique:users,email') 

、電子メールは、電子メールの形式にする必要があり、前のテーブルusersに登録されていないはずです。 (一意にする必要があります)

これはどのように機能しますか?

short-circuit?私たちは一歩一歩を通過する場合は、電子メール形式の場合

  • それは
  • 、その後
  • チェックを渡された場合、入力がrequired
    によって設定されている場合は、チェック次のルールにジャンプ渡された場合
    は、次のルールにジャンプテーブルにusers

存在しない場合は

  • チェックは、私は誰かを尋ねたと彼は言った、それはすべてをチェックし、すべてのルールを通過します。
    requiredルールが渡されない場合、入力が電子メール形式であるかどうかを確認する理由はありません。
    電子メール形式でない場合は、データベースを確認する必要はありません。

    どのように動作するか知っていますか?

  • +1

    検証クラスのソースを確認しましたか?ファイルは 'vendor/laravel/src/Illuminate/Validation'フォルダにあります。 –

    +0

    必須フィールドが1つ失敗し、Laravelが残りのルールをチェックしなくなった場合は、残りの必須フィールドが有効でエラーメッセージが表示されます。 – Anam

    +0

    たとえば:電子メール入力がいっぱいではなく、送信されていない場合、なぜあなたに報告するべきか:ちょっと電子メールフォーマットエラー!!!、ちょっとばかげているようです。この質問は、1人のユーザー入力に関するすべてのルールに関するものです。すべてのユーザー入力ではありません – Pars

    答えて

    3

    これはルールによって異なります。実際には、required属性が失敗した場合、Laravelは他のルールの処理を停止します。ただし、requiredが合格すると、他のルールの検証を続けます。

    つまり、同じフィールドに複数の検証エラーを受け取ることができます。

    0

    Laravel 4の詳細を見つけることができませんでしたが、Laravel 5.4 documentationは、すべての検証ルールが短絡評価なしで順番に実行されることを意味します。

    Laravel 5では、バリデーションルールに「bail」のプレフィックスを付けることで、強制的に短絡評価を行うことができます。

    $this->validate($request, [ 
        'title' => 'bail|required|unique:posts|max:255', 
        'body' => 'required', 
    ]); 
    

    私は、短絡がデフォルトでオフになる理由を探してここに来た、私はジェームズが、それは同じフィールドに複数のバリデーションエラーを受信するためのものであることを彼の推論に正しいと思います。

    関連する問題