web-dev-qa-db-ja.com

Laravel検証:検証が失敗した理由を確認してください

uniqueルールが原因でバリデーターが失敗したかどうかを確認する方法はありますか?

$rules = array(
            'email_address' => 'required|email|unique:users,email',
            'postal_code' => 'required|alpha_num',
        );

        $messages = array(
            'required' => 'The :attribute field is required',
            'email' => 'The :attribute field is required',
            'alpha_num' => 'The :attribute field must only be letters and numbers (no spaces)'
        );

        $validator = Validator::make(Input::all(), $rules, $messages);

        if ($validator->fails()) {

素人の言葉で言えば、私は基本的に知りたいです:「email_addressが一意ではなかったため、検証は失敗しましたか?」

12
dcolumbus

失敗したルールの返された配列内の特定のルールを確認します

if ($validator->fails()) {

    $failedRules = $validator->failed();

    if(isset($failedRules['email_address']['Unique'])) {

    ...
22

これによりエラーが表示され、何が失敗したかがわかります。

コントローラ

if($validation->fails()){

   return Redirect::back()->withErrors($validation)->withInput();
}

foreach($errors->all() as $error) {
  echo $error;
}

そしてあなたのブレードテンプレートにこれを追加してください:

   @foreach($errors->all() as $error)
        <div>
           {{$error}}
        </div>
   @endforeach

そして、それはエラーが何であれメッセージを返します。メールが一致しません。フィールドは必須項目です。何とか何とか

$ messageからその電子メール配列を削除することもできます。バリデーターがすべてを処理します。カスタムメッセージが必要な場合にのみ使用します。

このステートメントをvar_dumpすることもできます。

var_dump($ validation-> errors());死ぬ;

0
Lynx