2021.10.12【Laravel8】バリデーション機能の使い方LaravelPHPバリデーションとは入力されたデータが、条件や形式と合っているかチェックするものです。「バリデーション」という言葉を知らなくても、画像のようなエラーメッセージを見たことはあるかと思います。このように正しく入力しないと進めないのは、バリデーションと呼ばれる入力チェックが行われているからなんです。バリデーションを書いてみよう記述場所はコントローラー・フォームリクエストの2通りありますが、当記事ではコントローラーに記述する方法について見ていきます。コントローラーの記述方法も2通りあります。・Validatorファサードを使用validateメソッドは手軽ですが応用があまり効きません。Validatorファサードは少し記述が増えますが、エラー時のリダイレクト先を指定など独自の処理を行うことが可能です。validateメソッドで書くvalidateメソッドのエラー時は、自動でリクエスト元(入力ページ)にリダイレクトします。validateメソッドを使用した書き方は、2通りあります。['required'],]);例では、「required(必須入力)」「email(メールアドレスのフォーマットかどうか)」「unique:users(usersテーブルに登録済みではないか)」をチェックしています。」を使用するときは配列で書く必要があります。下の例では、正規表現「/^(090|080|070)-\d{4}-\d{4}$/」で携帯の電話番号かどうかをチェックしています。->withInput();}例はパイプ区切りで記述していますが、配列でも大丈夫です。Validationファサードは、リダイレクト先を指定する必要があります。エラーメッセージを表示するにはwithErrorsでエラーを渡す必要があります。取得することができます。エラーメッセージを表示させようエラーメッセージの表示foreachで発生しているエラーすべてを表示します。’)で特定のエラーだけ表示することが可能です。内容を変更すればOKです。':attributeには異なった値を指定してください。'有効なメールアドレスを指定してください。':attributeには、:valuesのどれかで終わる値を指定してください。',特定の箇所だけメッセージを変えたいような場合はコントローラー内で記述します。->withInput();}ルールごとにメッセージをカスタマイズできます。uniqueのメッセージだけカスタマイズしたい場合は、uniqueだけ記述すればrequiredとemailはデフォルトのメッセージを表示できます。開発中に直面した問題バリデーションエラー時に無限ループCメソッド内でBのバリデーションに失敗した際、無限ループが起こってしまいました。→エラー時はGETでBに戻る}原因は、CでバリデーションエラーになったときにBにAの値を渡せていなかったため、Bでも必ずバリデーションエラーになり無限ループ...という状態でした。用いてブラウザからのリクエストがGETかPOSTかを判別し、GETの場合はAのバリデーションを行わないようにすることで解決しました。省略}confirmメソッドからinputメソッドにリダイレクトした際、$encrypt_emailがnullのため暗号化できないよというエラーでした。こちらも同じくGET/POSTで条件分岐を行いました。リダイレクト先にパラメーターで$encrypt_emailを持たせ、バリデーションエラー時はパラメーターの値を取るようにすることで解決しました。省略}さいごにエラーの解決、そんなに難しいことはしていないですが苦戦しました。(途中諦めて全部if文で書こうとしました。リッキー10分でできる!WordPressのローカル環境が簡単に構築できる「Local」の使い方wordpress。