LaravelのFormRequestでバリデーション処理を作成する時のメモ

タイトル通りで一度作ったけど細かいこと忘れたといった時の為の自分用のメモです。FormRequestが何なのかといった説明はしていません。

FormRequestの準備

FormRequestを作る

次のコマンドでFormRequestを作ります。app/Http/RequestsにSampleRequest.phpという名前でファイルが作られます。

php artisan make:request SampleRequest

作ったFormRequestをControllerで使う

最初はこうなっている所を

public function store(Request $request)

こう変更します。依存性注入(DI)というので勝手にインスタンスを作成してくれるそうです。

public function store(SampleRequest $request)

Controllerでuseするのも忘れずに。

use App\Http\Requests\SampleRequest;

FormRequestの実装

FormRequestを作成した直後はこんな感じになっています。

authorizeメソッドの修正

認証用のチェックです。trueを返さないとエラー終了するのでtrueに変更します。

rulesメソッドの修正

使用可能なバリデーションルールを参考に設定します。以下は一例です。

attributeメソッドの作成

このままだと例えばtitleを入力しなかった場合のエラーメッセージは次の様になります。

titleは必ず指定してください。

これを次の様なメッセージにするにはattributeメソッドを作成します。

タイトルは必ず指定してください。

以下は一例です。

その他

バリデーションの前後で何か処理を加えたい時に使えるメソッドがいくつかあります。

prepareForValidation

バリデーションの前に実行されます。あまり意味はないですが以下の例ではタイトルと内容にラベルとなる文字を付けてます。

validationData

ここでreturnしたデータがバリデーションに使われます。prepareForValidationと似てますが、一時的に値を変更してバリデーションしたい場合はこちらを使い、元データそのものを変更したい時はprepareForValidationを使うという事かなと思いました。

passedValidation

バリデーションを通過した後に呼ばれるメソッドです。

コメントを残す

メールアドレスが公開されることはありません。