ユーザ用ツール

サイト用ツール


11_php:02_framework:01_laravel:29_laravel_custom_validation

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

11_php:02_framework:01_laravel:29_laravel_custom_validation [2019/04/24 10:51] (現在)
matsui 作成
ライン 1: ライン 1:
 +====== 29 Laravel Custom Validation ======
  
 +Laravelでカスタムバリデーションを作成する方法
 +
 +===== サービスプロバイダ作成 =====
 +
 +  php artisan make:​provider ValidatorServiceProvider
 +
 +<​code|app/​Providers/​ValidatorServiceProvider.php>​
 +namespace App\Providers;​
 +
 +use Illuminate\Support\ServiceProvider;​
 +use Domain\CustomValidator;​
 +
 +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()
 +    {
 +        //
 +    }
 +}
 +</​code>​
 +
 +
 +==== サービスプロバイダを設定ファイルに追加 ====
 +<​code|config/​app.php>​
 +'​providers'​ => [
 +    ...
 +
 +    App\Providers\ValidatorServiceProvider::​class,​
 +
 +    ...
 +</​code>​
 +
 +===== カスタムバリデーションのルール作成 =====
 +
 +<color #​ed1c24>​※カスタムバリデーションのメソッド名は、必ずvalidateXXXXという名前にする</​color>​
 +
 +<​code|app/​CustomValidator.php>​
 +<?php
 +namespace App;
 +
 +class CustomValidator extends \Illuminate\Validation\Validator
 +{
 +    /**
 +    * なまえのバリデーション
 +    *
 +    * @param $attribute
 +    * @param $value
 +    * @param $parameters
 +    * @return bool
 +    */
 +    public function validateName($attribute,​ $value, $parameters)
 +    {
 +        if (preg_match('/​[^a-Z]/​u',​ $value) !== 0) {
 +          return false;
 +        }
 +        return true;
 +    }
 +}
 +</​code>​
 +
 +===== エラーメッセージ追加 =====
 +
 +<​code>​
 +resources/​lang/​ja/​validation.php
 +
 +'​name'​ => 'The :attribute no valid name',
 +'​attributes'​ => [
 +       ...
 +
 +        '​family_name_name'​ => '​ふりがな(せい)',​
 +
 +</​code>​
 +
 +===== カスタムバリデーションを利用 =====
 +
 +<​code>​
 +            $request->​validate([
 +                '​name'​ => '​required|Name',​
 +            ]);
 +
 +</​code>​
 +{{tag>​Laravel}}
11_php/02_framework/01_laravel/29_laravel_custom_validation.txt · 最終更新: 2019/04/24 10:51 by matsui

Yesterday:178 Today:041 Total:07199