【Laravel5】ControllerでValidation

【Laravel5】ControllerでValidation

Seasons Come & Go

【Laravel5】ControllerでValidation

こちらのサイトのまとめです。

Form Requests and Controller Validation – Laravel5 Fundamentals

GitHubにサンプルプロジェクトがあります。

ryo-ogata/learning-laravel-5

空の記事が登録されてしまう

前回まで、Articlesテーブルを利用して、記事登録画面を作りました。

しかし、まだ入力チェックがされていないため、意図していない動作をしてしまいます。

  1. 何も入力せずに登録してみます。
  2. 一覧画面に何も表示されませんが、HTMLを見ると空のままのデータがあるようです。
    【Laravel5】ControllerでValidation
    【Laravel5】ControllerでValidation
  3. DBを確認してみます。

    id=6のレコードが今登録したものなのですが、title、bodyの部分が空文字列のままになっています。

    空のまま登録してしまったレコードは削除しておきましょう。

入力チェック(Validation)を追加する

  1. Requestモジュールを追加する

    以下のコマンドを打ちます。サフィックスは〜Requestにしておくとわかりやすいです。

    app/Http/Requests/CreateArticleRequestのファイルができました。確認しておきましょう。

  2. 入力チェックを実装する
    • app/Http/Requests/CreateArticleRequest

      authorize()メソッドは、このリクエストに対する認証を実装するためのものです。今のところ無条件で通るようにしたいので、常にtrueを返すようにしておきます。

      rules()メソッドに、記事登録の際の入力チェックルールを実装します。

    • app/Http/Controllers/ArticlesController

    • resources/views/articles/create.blade.php

      入力チェックエラーは$errorsに格納されるので、var_dumpを仕込んでおきます。

  3. 確認する。

    http://localhost:8000/articles/create

    空のままボタンを押してみます。すると、
    入力チェック(Validation)エラーのメッセージも表示されます。

    【Laravel5】ControllerでValidation
    【Laravel5】ControllerでValidation
  4. HTMLとして整える。

    • resources/views/articles/create.blade.php

      エラーメッセージをそれっぽくしてみます。var_dumpしていた部分を修正します。

  5. 確認する。

    http://localhost:8000/articles/create

    何も入力せずに記事を追加しようとしてみると、エラーメッセージが表示されました。

    【Laravel5】ControllerでValidation
    【Laravel5】ControllerでValidation

Tips

  • Requestクラスを作らずにValidationを実装する。

    Requestクラス抜きで実装する場合にはArticleController@storeを以下のようにします。

まとめ

<

p>Requestクラスにルールを追加して、入力チェックを実装しました。画面にエラーメッセージを表示することもできました。

次回は、登録/更新画面を題材にしたViewの使い回しと、記事の更新処理について、紹介したいと思います。

Comments are closed, but trackbacks and pingbacks are open.