Laravel

Laravel9でバリデーションにひらがなやカタカナを追加する方法

※本ページはアフィリエイトプログラムによる収益を得ています

Laravelのバリデーションに「ひらがな」や「カタカナ」をしたいのですが、なかなか最後まで正解を書いてくれている記事がなかったのでこの情報が欲しかったんだ!というのを2点にまとめてメモしておきます。

1. バリデーションルールと新たに追加する

まず、以下の場所にあるファイルのboot()部分に追記をします。コピペOKです。

app/Providers/AppServiceProvider.php

public function boot()
    {
				//ひらがなバリデーション追加
        Validator::extend('hiragana', function ($attribute, $value, $parameters, $validator) {
            return preg_match('/^[ぁ-ゞ]+$/u', $value);
        });
			
				//カタカナバリデーション追加
				Validator::extend('katakana', function ($attribute, $value, $parameters, $validator) {
            return preg_match('/[ァ-ヴー]+/u', $value);
        });
    }

ひらがなのバリデーションには「hiragana」、カタカナには「katakana」と設定。もちろんこの名称はお好きなもので結構です。

そして、なによりもここからが大事で、
私の場合、上記の記述を追加しただけではValidatorのclassがないよ!というエラーがでました

なので、同じAppServiceProvider.phpファイルの冒頭部分にValidatorクラスを読み込ませる記述を加えましょう。laravel9の場合のValidatorの格納場所は以下です。

use Illuminate\Support\Facades\Validator

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator; // ←これを追記

この上記部分を書いてくれている記事があまりなかったので正解を見つけるまでに結構時間かかりました。

あとは、新しく作ったhiraganaとkatakanaを必須項目などと同じように使うだけです。2つ加わったことで以下のようなバリデーションチェックが可能となりました。

必須:required
半角数字:numeric
ひらがな:hiragana
カタカナ:katakana
Eメール:email
URL:url

使う時の記述はまた後日追記いたします。