Создание правил валидации
1-ый способ: Замыкание
Создать свой способ валидации можно через замыкание (англ. Closure), также такой способ ещё называют «анонимные функции».
На примере ниже показан пример создания валидации для параметра «color».
$request->validate([ 'title' => 'required', 'color' => function($attribute, $value, $fail) { if ($value != 'green') { $fail('The '.$attribute.' value is not a color name'); } }, ]);
2-ой способ: Расширение
Правило валидации можно создать в файле app/Providers/AppServiceProvider.php через метод Validator::extend()
.
# app/Providers/AppServiceProvider.php use Illuminate\Support\Facades\Validator; class AppServiceProvider extends ServiceProvider { // … public function boot() { // создание валидации «is_color» Validator::extend('is_color', function ($attribute, $value, $parameters, $validator) { return $value == 'green'; }); } }
Теперь в валидации можно указывать параметр «is_color».
$request->validate([ 'color' => 'is_color', ]);
Сообщение об ошибке указывается в файле resources/lang/ru/validation.php.
# resources/lang/ru/validation.php return [ 'is_color' => 'Поле «:attribute» должно содержать название цвета', // … ];
3-ий способ: Создание правила
Также можно создать отдельное правило валидации через команду artisan make:rule
.
php artisan make:rule IsColor
В результате будет создан файл app/Rules/IsColor.php.
# app/Rules/IsColor.php class IsColor implements Rule { // Условие, при котором будет проходиться валидация public function passes($attribute, $value) { return $value == 'green'; } // Сообщение об ошибке public function message() { return 'The :attribute value is not a color name'; } }
Теперь это правило валидации можно применять в методе validate()
.
// Подключение файла валидации use App\Rules\IsColor; // … $request->validate([ 'title' => 'required', 'color' => new IsColor, // пользовательская валидация ]);
Авторизуйтесь, чтобы добавлять комментарии