FORMREQUEST: ВАЛИДАЦИЯ ФОРМ В LARAVEL


FORMREQUEST: ВАЛИДАЦИЯ ФОРМ В LARAVEL

<?php
    public function rules()
    {
        return [
            'name' => 'string|unique:users,name,' . $this->route('id'),
            'email' => ['email', Rule::unique('models')->ignore($this->route('id'))],
            'address_count' => 'required_if:status,1' ,
            'test' => ['bail',
                Rule::requiredIf(function () {
                    return $this->get('address_count') > 2;
                }),
            ],
            'test2' => function ($attribute, $value, $fail) {
                if ($value === 'foo') {
                    $fail($attribute . ' is invalid.');
                }
            },
        ];
    }

    protected function passedValidation()
    {
        $this->offsetSet('test', 1);
    }

public function withValidator($validator)
    {
        $validator->after(function ($validator) {
            if (empty($this->toArray())) {
                $validator->errors()->add('body', 'Request body cannot be empty');
            }
             if (!$this->validateCaptcha()) {
                $validator->errors()->add('g-recaptcha-response', 'invalid');
            }


        });
    }

 

# очистить пустые значения
        \Illuminate\Support\Facades\Validator::extend('rm', function ($attribute, $value, $parameters, $validator) {
            if (empty($value)) {
                request()->offsetUnset($attribute);
            }
            return true;
        });

 

# валидация в контроллере
    public function __invoke(Request $request)
    {
        $data = validator()->make($request->all(), [
            'name' => 'required|users,name',
        ])->validate();
# 
                if (true) throw \Illuminate\Validation\ValidationException::withMessages([
                    'test_field' => ['Bad test_field'],
                ]);

 

 

 

# валидатор изображения 
            'image' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|dimensions:min_width=1600,min_height=1200|max:15360',