Laravelでカスタムバリデーションの登録方法。

以下のように設定してしまったほうがだいぶ楽な感じ

1 /app/Services/CustomValidator.php クラスを作成

<?php
namespace AppServices;

class CustomValidator extends IlluminateValidationValidator
{
    
    public function validateAlphaNumeric($attribute,$value,$parameters){
        return (preg_match("/^[a-z0-9]+$/i", $value));
    }
    
    public function validateAlphabet($attribute,$value,$parameters){
        return (preg_match("/^[a-zs]+$/i", $value));
    }
}

2 app/Providers/ValidatorServiceProvider.php クラスを作成

<?php

namespace AppProviders;

use AppServicesCustomValidator;
use IlluminateSupportServiceProvider;

class ValidatorServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        Validator::resolver(function($translator,$data,$rules,$messages){
            return new CustomValidator($translator,$data,$rules,$messages);
        });
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

3 /config/app.php の ‘providers’ に追記

    'providers' => [
        .
        .
        .
        AppProvidersValidatorServiceProvider::class,
    ],  

4 使う

関数名がキャメルケースでValidationではスネークケース。

    public function validateAlphaNumeric($attribute,$value,$parameters){
        return (preg_match("/^[a-z0-9]+$/i", $value));
    }

という関数なら、以下のようにスネークケースで指定できる。

    'name' => 'required|alpha_numeric'