【Laravel】withValidator() を使ったバリデーションの追加

App\Http\Requests\SampleRequest

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use Illuminate\Contracts\Validation\Validator;

class SampleRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'name'   => 'bail|required|max:100',
            'number' => 'bail|required|integer|max:10000000',
        ];
    }

    public function withValidator(Validator $validator)
    {
        // number の入力値が50より大きい場合のみ、必須と最大文字数のチェックを行う
        $validator->sometimes('type', 'required|max:100', function () {
            return $this->input->number > 50;
        });
    }

    public function attributes()
    {
        return [
            'name'   => '名前',
            'number' => '数',
            'type'   => 'タイプ',
        ];
    }
}