0
0

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 3 years have passed since last update.

Laravel:バリデーションをスマートかつ、任意メッセージを作成

Last updated at Posted at 2020-10-22

【概要】

1.結論

2.どのようにコーディングするか

3.開発環境

1.結論

FormRequestを作成し、rulesに検証ルールを用いて、messagesメソッドで任意のメッセージを記載する!


2.どのようにコーディングするか ----------------------------------------

まずFormRequestを作成します。

php artisan make:request HogeRequest

なぜFormRequestを作成するのかというと、その方が機能としてスマートだからです。Controllerにも記載することは可能ですが、コントローラーはViewやModelに指示を送る橋渡し役がメインになります。バリデーションをする役目ではなく、クライアントからリクエストされた際にリクエスト内部でバリデーションの機能を実行した方がスマートだからです。

上記で作成した後にControllerに下記の記載を忘れないでください。

app/HttpControllers/HogeController.php
use App\Http\Requests\HogeRequest;

このように記載しないと下記に記載するHogeRequest.phpが機能しません。

app/Http/Requests/HogeRequest.php
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class HogeRequest extends FormRequest
{
    public function authorize() #---❶
    {

        if ($this->path() == 'hoge') #---❷
        {
            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' => '適切なemailを入力してください',
            'age.numeric' => '年齢は整数で入力してください',
            'age.between' => '適切な値を入力してください'
        ]; #---❻
    }
}

❶:authorizeで、FormRequestが許可されているかどうかチェックします。
❷:アクセスしたパスをチェックしています。hoge以外は通さないようにしています。
❸:rulesで、バリデーションの機能を果たしています。
❹:blade.php(view)におけるname要素(name,mail,age)を指定し、検証ルール(required,email,numeric|between)に則ってコーディングしています。
❺:FormRequestのmessagesメソッドをオーバーライドしています。つまり親クラス(FormRequest)のメソッドを子クラス(HogeRequest)で再定義しています。記述していないルールがあった場合は親クラスがそのままレンダリング(英語表記)されます。
❻:❹と同じようにコーディングします。その際に'name要素.検証ルール(❹で設定したルール)' => '任意のメッセージ'を記載すると、アプリ制作者が意図したメッセージを表示できます。


3.開発環境 ---------------------------------------- PHP 7.4.10 Laravel 8.9
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?