フォームリクエストの使い方 [Laravel]
Laravelの「フォームリクエスト」はバリデーションの処理を専門に行います。コントローラーとバリデーションの処理を切り分けたい際に使用します。

前提条件
// コントローラー ・app\Http\Controllers\Answer(s)Controller.php // ビュー ・resources\views\answers\index.blade.php |
があるものとします。※(s)は現場によって単数形、複数形が異なる。
1. フォームリクエスト
1-1. フォームリクエストのファイルを生成する
php artisan make:request HelloRequest
app\Http\Requests\HelloRequest.phpが作成される。
1-2. HelloRequest.php
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class HelloRequest extends FormRequest { public function authorize() { // 一致するパスのみバリデーションを実行する if ($this->path() == 'answers') { return true; } else { return false; } } public function rules() { return [ 'name' => 'required|max:50', 'url' => 'nullable|url|max:250', 'body' => 'required' ]; } public function messages() { return [ 'name.required' => '名前は必ず入力して下さい。', 'url.url' => 'ホームページに正しい形式を指定してください。', 'body.required' => '本文は必ず入力して下さい。', ]; } }
messages()でエラーメッセージを設定できるが、validation.phpを利用した方が良い。 エラーメッセージの日本語化 (validation.php)を参照。
1-3. コントローラー
storeの引数がRequestではなくHelloRequestになっている事を確認。
// 追加分 use App\Http\Requests\HelloRequest; public function store(HelloRequest $request) { // なんらかの保存処理 }
これだけでフォームリクエストによるバリデーションは完了です。
エラーがない場合はコントローラーの「何らかの保存処理」へ進み、エラーがある場合は自動的に前画面に戻って$errorsにエラー内容が設定されます。
2. おすすめのやり方
モデルでルールを定義する手法です。Ruby on Railsと同じです。
2-1. モデル
<?php namespace App; use Illuminate\Database\Eloquent\Model; // 追加分 use App\Rules\NgWord; class Answer extends Model { protected $guarded = array('id'); public static function Rules() { return [ 'name' => ['required','max:50', new NgWord('name')], 'url' => 'nullable|url|max:250', 'body' => ['required', new NgWord('body')] ]; } }
NgWordはカスタムバリデーションルールです。カスタムバリデーションルールを使用する際は[]で配列にする必要があります。
2-2. コントローラー
// 追加分 use App\Answer; public function store(Request $request) { // バリデーション $request->validate(Answer::Rules()); // なんらかの保存処理 }
スポンサーリンク
関連記事
公開日:2020年11月17日
記事NO:02855
この記事を書いた人
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
プチモンテ代表、アーティスト名:プチモンテ | |
🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~ |
オリジナル曲を始めました✨
YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte