【PHP】Laravel5でカスタムバリデーションを追加する
投稿日:
■環境
Laravel 5.1
Laravel5でカスタムバリデーションを追加した際の手順です。
まず、サービスプロバイダーを作成します。今回は『ValidatorServiceProvider』という名前で作る事にします。
以下コマンドを実行すると、『/app/providers/ValidatorServiceProvider.php』が生成されます。
php artisan make:provider ValidatorServiceProvider
作成したサービスプロバイダーを『/config/app.php』に追記します。
"providers" => [
〜〜 省略 〜〜
App\Providers\ValidatorServiceProvider::class,
〜〜 省略 〜〜
],
作成したサービスプロバーダーにバリデーションルールを記載します。
例えば以下のルールの社員番号があったとします。
・頭文字は「A」または「Z」
・2文字目以降は数字6桁
このバリデーションルールを『shainbangou』という名前のルールで登録するとこうなります。
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Validator;
class ValidatorServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('shainbangou', function($attr, $value, $param) {
return preg_match('/^[A|Z][0-9]{6}$/', $value);
});
}
}
次にエラー文言の設定をします。
viewにて社員番号はempIdという変数名で設定されているとします。
【/resources/lang/ja/validation.php】
return [
〜〜 省略 〜〜
'custom' => [
'empId' => [
'shainbangou' => '社員番号が間違っています。(A/Z + 数字6桁).',
],
],
〜〜 省略 〜〜
'attributes' => [
'empId' => '社員番号',
],
];
これで、コントローラなどのバリデーション処理で新ルール「shainbangou」が使えるようになります。