1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravelのフォームリクエスト【個人的なお勉強アウトプット】

Last updated at Posted at 2022-03-24

参考図書

フォームのバリデーションをコントローラに書くのもあまりクールではない。
Laravelにはバリデーションをまとめて処理できる「フォームリクエスト」という機能を用意した。
LaravelはクライアントからのリクエストはRequestクラスのインスタンスとして送られてくる。
このRequestを継承して作成されたのが「FormRequest」。これを利用することでフォームに関する機能をリクエストに組み込むことができる。

フォームリクエストの流れ

①クライアントからのリクエスト
②フォームリクエストでバリデーション
③コントローラでの処理
④レスポンス

③で行っていたバリデーションを②でできる。

フォームリクエストの作成

php artisan make:request HelloRequest
HTttp/RequestにHelloRequest.phpが作成される。
フォームリクエストは基本的に当該フォルダ内に配置。

HelloRequestのコード

HTttp/Request/HelloRequest.php
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class HelloRequest extends FormRequest
{
    
        public function authorize()
        {
            if($this->path() == 'hello'){
                return true;
            }else{
                return false;
            }
        }

        public function rules()
        {
            return [
                'name' => 'required',
                'mail' => 'email',
                'age' => 'numeric|between:0,150',
            ];
        }

        public function messages()
        {  
            return [
                'name.required' => '名前は必ず入力してください。',
                'mail.email' => 'メールアドレスが必要です。',
                'age.numeric' => '年齢を整数で記入ください。',
                'age.between' => '年齢は~150の間で入力ください。'
            ];

        }

}

authorize

フォームのリクエストを利用するか否かのアクション。
trueで許可、falseで不許可

rules

適用されるバリデーションの検証ルールを設定する。

messages

エラーメッセージをオーバーライドできる

アクションを修正する

/app/Http/Controllers/HelloController.php
use App\Http\Requests\HelloRequest;

public function post(HelloRequest $request){
return view('hello.index', ['msg'=>'正しく入力されました!']);
}

メソッドの引数でフォームリクエストのクラスを指定。これでHelloRequestに設定した内容を元にバリデーションが実行されるようになる。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?