フォームリクエスト(FormRequest)を利用してバリデーションを実装してみます。
下記関連ページではコントローラーに直接バリデーションルール等の処理を記述しましたが、フォームリクエストによるクラスを利用するとバリデーションの記述をコントローラーから切り離すことができます。
関連ページ
※コントローラーおよびテンプレートの作成、routes/web.phpの編集等は本記事では説明しませんので関連ページをご覧下さい。
フォームリクエストクラスを作成し、生成されたファイルに下記のように追記/編集します(ハイライト部分)。
1 |
$ php artisan make:request StoreMember |
app/Http/Requests/StoreMember.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreMember extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'name' => 'required|min:2|max:5', 'email' => 'required|email', ]; } public function messages() { return [ 'name.required' => '名前を入力して下さい。', 'name.min' => '名前は2文字以上入力して下さい。', 'name.max' => '名前は5文字以下で入力して下さい。', 'email.required' => 'メールアドレスを入力して下さい。', 'email.email' => '正しいメールアドレスを入力して下さい。', ]; } } |
app/Http/Controllers/MemberController.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests\StoreMember; class MemberController extends Controller { public function index() { return view('member.index'); } public function confirm(StoreMember $request) { $validated = $request->validated(); return view('member.confirm')->with($validated); } } |
検証に失敗するとフォーム画面(/member)へとリダイレクトされ、成功すると確認画面(/member/confirm)へと遷移します。
参照ページ