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',