ユーザ用ツール

サイト用ツール


11_php:02_framework:01_laravel:29_laravel_custom_validation
no way to compare when less than two revisions

差分

このページの2つのバージョン間の差分を表示します。


11_php:02_framework:01_laravel:29_laravel_custom_validation [2019/04/24 01: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 01:51 by matsui