【Laravel】AppServiceProviderにカスタムバリデーションを登録する。
自分用のメモとして残します。
AppServiceProviderのboot内に定義することで、暗黙的にインクルードされる。
そのため、フォームリクエスト内やコントローラ内でバリデーションで直ぐに使える。
やり方
AppServiceProviderに任意のバリデーションルールValidator::extendで定義する。
下記の例は入力値を半角全角のカタカナ英数字を正規表現で判定します。
katakana_or_number_or_abc 呼び出せる。
app\Providers\AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::extend('katakana_or_number_or_abc', function ($attribute, $value, $parameters, $validator) {
$arr_regex= [
'\-',//半角ハイフン
'ー',//全角ハイフン
'0-9' ,// 半角数字
'0-9' ,//全角数字
'a-z' ,//全角英字(小文字)
'A-Z' ,//全角英字(大文字)
'a-z' ,//半角英字(小文字)
'A-Z' ,//半角英字(大文字)
'ァ-ヴ',// 全角カタカナ
'ヲ-゚' ,// 半角カタカナ
];
$regex = '/^['.join('',$arr_regex).']+$/u';
return preg_match($regex, $value);
}, ':attributeはカナと英数字のみで入力してください。');
}
}
以上です。
Author And Source
この問題について(【Laravel】AppServiceProviderにカスタムバリデーションを登録する。), 我々は、より多くの情報をここで見つけました https://qiita.com/msht0511/items/ae29dad68de234d16a36著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .