Laravelのバリデーション処理

バリデーション

  • バリデーション
    • DBに格納するデータに満たしていないものを弾く
    • 投稿機能などには必須
//バリデーションしたい値をvalidete関数に格納する
$request->validate([
            "sales_day" => "required"
        ]);
{{-- バリデーションエラーメッセージを表示する お決まりのようなもの--}}
    @if ($errors->any()) 
    <ul>
        @foreach($errors->all() as $error) {
        <li>{{$error}}</li>
        @endforeach
    </ul>
    @endif()

・・・
//old関数を使うとバリデーション後も入力値が残る
<input type="tel" id="client_code" name="client_code"
                           value="{{old(('client_code'))}}"
  • バリデーションメッセージの日本語化

Laravelでバリデーションを日本語化する方法!
validation.phpのファイルは以下からコピペ
Laravel 8.x validation.php言語ファイル

  • メッセージの変数名はattributesに指定することで日本語化可能
 'attributes' => [
        'sales_day' => '計上日付'
    ],
//赤字のメッセージ
@if ($errors->any())
            <div class="text-danger">
            @foreach($errors->all() as $error)
            {{$error}}
            @endforeach
            </div>
        @endif()
  • 独自のバリデーションルールを作る
//ターミナルからルールファイルを作成
% php artisan make:rule GoodsCode
<?php

namespace App\\Rules;

use Illuminate\\Contracts\\Validation\\Rule;

class GoodsCode implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        //ここにルールの処理を書く(正規表現など)
				//returnがfalseならエラー
				return true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        //独自のメッセージ attributeは入力変数name(または日本語補完したもの)が入る
        return '正しい形式で入力してください(:attribute)';
    }
}

使用方法はcontrollerのvalidate変数に作成したルール名を格納する

$request->validate([
            "sales_day" => "required",
            'goods_code' => ['require', new GoodsCode()]//複数の場合は配列にして指定可能
        ]);