Laravel5でカタカナのバリデーションチェックを追加

2016.06.04

Laravel5で、入力した文字列にカタカナ以外混ざっていないかチェックするバリデーションルールを探したのですが、どうにもデフォルトでは出来ない事が判明。独自に追加することにしました。
今回はカタカナチェックのバリデーションルールを追加していきたいと思います。

参考にしたのは以下の2サイトです。


バリデーションルールの追加手順

順番に作っていきます。

Validation

RuleValidator.phpを作成します。

// app/Validation/RuleValidator.php
class RuleValidator{
public function validateKatakana($attribute, $value, $parameters){
if (mb_ereg('^[ァ-ヶー]+$]', $value)) {
return true;
}
return false;
}
}

入力された内容をチェックし、カタカナ以外の文字が含まれていればfalse、全てカタカナならtrueを返します。

Providers

AppServiceProvider.phpのbootメソッドに1行追加します。

// app/Providers/AppServiceProvider.php
ublic function boot(){
Validator::extend(
'katakana', 'App\Validation\RuleValidator@validateKatakana'
); // 追加
}

Validator::extend(‘ルール名’,’無名関数’)
リファレンスが見つからず、引数の詳細が分かりませんでした。
要するに、ルール名「katakana」でバリデーションチェックを行うと、RuleValidator.phpで設定したロジックが実行され、trueかfalseが返ってくる仕組みです。

エラーメッセージ

AppServiceProvider.phpに追加したルール名に紐づくエラーメッセージを1行追加します。

// app/lang/ja/validation.php
"katakana" => ":attributeはカタカナを入力してください。",

「app/lang/ja」なんて無いけど!と言う方は「app/lang/en」をコピペして作ってください。詳しくはこちらのサイトが分かり易いです。
Laravelのロケールを変更してエラーメッセージを日本語にする/Webエンジニアブログ

Request

AppServiceProvider.phpに追加したルール名をTestRequest.php(自作)に追加します。

// app/Http/Request/TestRequest.php
public function rules(){
return [
'name' => 'required',
'furigana' => 'required|katakana',
];
}

以上で準備は完了です。実際に動かしてみます。


動作確認

ひらがなを入力して確認します。
laravel5

次は半角英字を入力して確認します。
laravel5

最後にひらがなとカタカナを混ぜて確認します。
laravel5

大丈夫そうですね。これで完了です。

補足

命名規則などを調べずに作っているので、クラス名など適当になってます。できれば一度調べることをお勧めします。私もちゃんと調べます。

関連する記事

CATEGORY

ARCHIVE

NEW