健一朗システム開発LaravelのValidateの使い方を調べてみた:その3ツイートこんにちは、システムエンジニアの今井です。前回のブログでLaravelのValidateで「Requestクラスのvalidateメソッドを使う方法」を紹介しました。Controllerファイル内にvalidateする処理を書くとvalidateする項目数が増えるにつれControllerファイルのコードが肥大化してしまいます。今回は、validateする処理を外部ファイル化しControllerファイルがスリムになるように「Requestクラスを継承して使う方法」について書いてみたいと思います。今回紹介するすべてのvalidationは、これまでと同様に以下4つのPOST値をチェックする前提で説明します。1.9.1それでは、「Requestクラスを継承して使う方法」について紹介したいと思います。1:Laravel自体を作成composerを使って以下のコマンドを叩くと、実行したコマンドのカレントディレクトリにlaravel_sampleというディレクトリが作成されます。※:以下の作業を行うとapp/Http/Controllers配下にHogeController.phpが作成されます。※:Requestクラスを継承するためのHogeRequestを作成します。app/Http/Requests配下にHogeRequest.phpが作成されます。HogeRequest4:routes/web.php以下の設定で/hogeのURLを開いた時にHogeControllerのindexアクションを呼び出します。/hogeのURLにPOST通信したときにHogeControllerのpostアクションを呼び出します。作成/hogeのURLを開いた時に表示されるHTMLになります。Bootstrap4.3.1を使っています。{{old(‘xx’)}}はvalidationでエラーになった時に直前に入力していた値を表示します。$errorsの箇所はエラーメッセージを表示します。作成このファイルはvalidateを通過した時に表示されるページになります。POSTしたデータの内容が表示されます。'メールアドレスを入力してください。'正しいメールアドレスを入力してください。'名前を入力してください。'名前は:max文字以内で入力してください。'タイトルは:max文字以内で入力してください。'メッセージは:min文字以上で入力してください。'メッセージは:max文字以内で入力してください。}}以上で、実装までが完了しました。前回のブログのHogeControllerと比べてのpost()メソッドの中身がかなりすっきりしました。9からはこれを動作してみます。8000番ポートにアクセスできるようにします。0.0.0.010:ブラウザで8000番ポートで/hogeにアクセスします9のコマンドを行ったサーバのIPアドレスが192.168.1.30として以下のURLでアクセスします。http://192.168.1.30:8000/hoge注)サーバで8000番ポートがiptablesやfirewalld等で閉じている場合は、あらかじめ開けておいてください。以下のようなフォームが表示されます。11:空っぽでSubmitボタンを押してみますメールアドレスと名前の箇所は必須入力ですので、この2つでエラーが表示されました。12:その他のエラーを出してみるメールアドレスにふさわしくない形、名前に255文字以上、タイトルに255文字以上、メッセージに1000文字未満をいれてSubmitしてみます。条件に合わないのでエラーが表示されます。13:正しい内容の値を入力しvalidateを通過してみます以下のように正しい内容の値を入れてSubmitします。Submitするとpost.blade.phpの内容が表示され、validateを通過することが確認できました。まとめRequestクラスを継承したHogeRequestクラスを作成して、validateする処理をHogeRequestにもたせることによって、HogeControllerの中身がスッキリすることが出来ました。3つ続けてLaravelのValidateについて書かせて頂きました。同じ処理をするにも色々な方法がありました。Lravelは非常に多機能でvalidate処理は今回紹介した3つだけでなく別のやり方もできそうでした。案件に応じて色々なやり方を試してみるのもいいかもですね。Spiceworks.,Co.,Ltd。