レスポンスマクロを一箇所にまとめて定義
前回、前々回のレスポンスのマクロの定義は、app/Providers/AppServiceProvider.phpのアプリのサービスプロバイダーに入れましたが、マクロの定義が増えてくると整理した方が良いのと、コントローラ以外では必要もないので、単独のサービスに移します。
前回、前々回のレスポンスのマクロの定義は、app/Providers/AppServiceProvider.phpのアプリのサービスプロバイダーに入れましたが、マクロの定義が増えてくると整理した方が良いのと、コントローラ以外では必要もないので、単独のサービスに移します。
一度気に入ると、より使って見たくなるのが人の常。ということでさらにマクロの活用です。今回は、前回と同様なレスポンスマクロを使用して、サイトからダウンロードするファイルを保護します。
前回、validate()のソースコードで登場したマクロ、今回は有用なマクロの活用の例を紹介します。
バリデーションの実例をちょっと休んで、実際にバリデーションを実行する部分を見てみます。お客さんのプロジェクトで最近この辺を詳しく見る機会があったので、皆さんと共有です。
今回は、引数にDBの情報を指定するバリデーションルールです。今回はデータベースを伴うテストなので、use RefreshDatabase;のトレイトや、factory()->create()が使用されています。 exists unique 後者の方は、会員登録では必須のバリデーションです。会員編集の方でも自分のレコードを外す引数を指定すれば使用可能です。しかし、Laravel 5.5からのRuleの登場で、よりわかりやすい形でも指定できます。これらは皆、今回のテストに含まれています。
今回は、引数にフォームの他の項目名を指定するバリデーションルールです。 confirmed different in_array same 個人的には、最初のconfirmed以外は使用したことないですね。in_arrayでは引数として指定する項目が配列であることを示すために、field2.*のように指定する必要あることに注意してください。 さて、他の項目の値を引数としては使わないのですが、入力値が配列のときに、それらの値に重複がないというチェックもここに掲載します。他に入れるところがないというのですが、本当は。配列という投稿を作成してもよいかもしれませんね。 distinct
入力値のデータタイプの判定のバリデーションから、今度は条件で判定するバリデーションに移っていきます。条件で判定するバリデーションには、その条件で使用される引数の指定が必要となります。引数には、 文字列や数字の定数値(例:min, maxなど) 同じフォームの他の項目名(例:same、differentなど) DBの情報(例:exists、unique) が指定されます。 今回は、最初の引数タイプ、定数値を引数とする条件の以下のバリデーションのテストを掲載します。 digits digits_between size between min max in not_in regex また、前回紹介した日付のバリデーションの以下も定数値を引数とする条件に含まれますね。 date_format, date_equals, after,…
今回は日付関連のバリデーションを掲載します。 date date_format date_equals after after_or_equal before before_or_equal date以外、今回は皆ルールの指定にはパラメータが必要となります。
特殊データタイプとしてのチェックとして以下のテストを掲載します。以下からのリンクだけでなく、この投稿にも掲載してあります。 alpha alpha_dash alpha_num accepted active_url email ip timezone url
基本データタイプのチェックとして以下のテストを掲載します。以下からのリンクだけでなく、この投稿にも掲載してあります。 boolean integer numeric string array json