[:ja]

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'

[:en]

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

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

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

<?php
namespace App\Services;

use Illuminate\Validation\Validator;

class CustomValidator extends Validator
{
   
// 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));
// }
   
   public function validateRegulationCuts($attribute,$value,$parameters){
      
      dd($value);
      
   }
   
}

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

<?php

namespace App\Providers;

use App\Services\CustomValidator;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\ServiceProvider;


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' => [
        .
        .
        .
        App\Providers\Validator\ServiceProvider::class,
    ],  

4 使う

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

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

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

    'name' => 'required|alpha_numeric'

[:]