WINDIIテック現役フリーランスエンジニアが運営するテックメディア。it本記事では、ブログ投稿システムを作りながらLaravelのバリデーションの使い方をわかりやすく解説していきます。以下の記事の続きです。読んでいない方はぜひご一読ください!Laravelのリクエスト(Request)を処理してみよう!本記事では、ブログ投稿システムを作りながらLaravelのリクエストの処理方法をわかりやすく解説していきます。以下の記事の続きです。読んでいない方はぜひご一読ください!初心者の方でもLaravelの動作環境を簡単に作れるWINDIIオリジナルのソースコードを用意...初心者の方でもLaravelの動作環境を簡単に作れるWINDIIオリジナルのソースコードを用意したので、実際に動かして学ぶとより深く理解できるようになります!以下の記事を参考にご活用ください。Laravelを簡単に動かせるスターターキットを作成しました!Laravelを簡単に動かせるスターターキットを作成しました?当サイトでLaravelの動作を説明するときなど積極的に使っていきます!GitHubのレポジトリはこちらから使い方Git、Dockerがすでに入っていることを前提とします。https://github.com/windii-legend/...目次バリデーション(Validation)ってなに?バリデーションを使ってみるフォームリクエストを使うエラーメッセージのカスタマイズ(日本語化)まとめバリデーション(Validation)ってなに?バリデーションとは、入力値を検証する機能です。ユーザから送られてきたデータは必ずしもシステムにあったデータとは限らないため、チェックする必要があります。ブログ記事の投稿時、ユーザがタイトルを入れていなかった場合、タイトルを入力してください。メッセージを出してあげる感じです。サービスを使っているとよくこのようなメッセージに出くわすと思うので、イメージしやすいと思います。説明はこれくらいにして、さっそくバリデーションを実装してみましょう!バリデーションを使ってみるブログ投稿のシステムの場合、タイトルと本文が未入力ですとブログ記事として成り立たないので、バリデーションしてみましょう。メソッドに以下の処理を追加します。redirect("/articles");}バリデーションをしているのは以下の部分です。'required',]);タイトルと本文を入力必須(required)に指定しています。タイトルと本文が未入力の場合、エラーメッセージも表示したいので、resources/views/articles/create.blade.phpに以下の記述を追加します。</form></div>@endsection書き終えたら、タイトルと本文を未入力で投稿してみましょう。以下のように表示されるはずです。エラーがちゃんと表示できてますね。(あとで日本語化するので、とりあえず英語のままで!)入力を必須にする以外にも様々なバリデーションルールが用意されています。タイトルは32文字以内というルールにしてみましょう。先ほど設定したバリデーションルールを以下のように変更します。'required',]);以下のように長いタイトルを投稿してみましょう。一つバリデーションルールをご紹介します。ある投稿とかぶるタイトルを投稿した場合、エラーにしてみましょう。コントローラのバリデーションルールを以下のように修正しましょう。'required',]);すでに存在しているタイトルを指定して投稿してみましょう。あるよ!とエラーが出てますね。Laravelには他にも様々なバリデーションルールがあるのですが、その中からよく使うバリデーションルールをご紹介しました!フォームリクエストを使う先ほどまではバリデーションルールをコントローラに記述しました。これでも全然よいのですが、バリデーションの処理を分離して管理する方法をご紹介します。いうバリデーション用の機能があります。いうフォームリクエストクラスを作成します。StoreArticle実行すると、app/Http/Requests/StoreArticle.phpが生成されます。中身を見てみると、こんな感じになっています。}}rules()メソッドの中に先ほどのバリデーションルールを書いてみましょう。];}またauthorize()メソッドがtrueを返すように変更しましょう。true;}次にコントローラを修正します。app/Http/Controllers/ArticleController.phpを修正します。上の方に以下の記述を追加します。省略}次にstore()メソッドを以下のように修正します。redirect("/articles");}これで完了です。先ほどのようにタイトルと本文を空にして投稿してみましょう。バリデーションされていますね!?フォームリクエストを使うと、コントローラに直接バリデーションを書いた場合に比べて、コントローラがスッキリするのがわかりますね。今回のような単純な例ではあまり気にならないかもしれませんが、実際のアプリケーション開発では、バリデーションだけで何十行にもなってしまうことがあります。そこでフォームリクエストを使うと、見通しがよくなるわけです。エラーメッセージのカスタマイズ(日本語化)先ほどまでで一通り、バリデーションの仕方を理解できたと思います。最後に、バリデーションメッセージのカスタマイズの方法をご紹介します。英語だとユーザにわかりにくいので、日本語にしてしまいましょう!app/Http/Requests/StoreArticle.phpを開いて以下を追加します。'タイトルを入力してください。'タイトルは32文字以内にしてください。'このタイトルはすでに使用されています。'本文を入力してください。];}これでカスタマイズ完了です。タイトルと本文を空欄にして投稿してみましょう。日本語化されました!?長いタイトルを入力すると...すでにあるタイトルを使用すると...完璧ですね?まとめ以上、バリデーションの使い方について一通りご紹介しました。バリデーションは比較的地味な機能ですが、実際のアプリケーション開発では避けて通ることはできません。本記事でしっかりマスターしてしまいましょう!次回は認証についてです!Laravelの認証機能を設定してみよう!本記事では、ブログ投稿システムを作りながらLaravelの認証機能の設定の仕方をわかりやすく解説していきます。以下の記事の続きです。最新の記事ririWINDII(ウィンディ)は、フリーランスエンジニアが運営するテックメディアです。Slackで無料コミュニティも運営しています。たくさんのエンジニアが参加していて、プログラミングの相談や雑談などをしている楽しいコミュニティなので、興味ある方はぜひお気軽にご参加ください。(全て見る)Canvaが最高すぎる。)この記事へのコメントはありません。この記事へのトラックバックはありません。URL返信をキャンセルする。