proklung / controller-sanitizer-validator
Валидация и санация запроса посредством трэйтов для Symfony-ориентированных приложений
1.2.4
2021-08-08 16:52 UTC
Requires
- php: >=7.3 || ^8.0
- ext-json: *
- egulias/email-validator: ^2 || ^3
- giggsey/libphonenumber-for-php: ^8.12
- illuminate/validation: ~6 | ~7 | ~8
- proklung/base-exception: ^1.0
- symfony/http-foundation: ^4.4 || ^5.0
- waavi/sanitizer: ^1.0
Requires (Dev)
README
Установка
composer require proklung/controller-sanitizer-validator
Нюансы
Очищаются только GET и POST параметры запроса. Валидируются все типы запросов.
Санитайзер
С помощью https://github.com/Waavi/Sanitizer. В контроллере может быть реализован метод getSanitizingRules
,
описывающий правила санации. Или определено свойство типа массив sanitizingRules
.
use Prokl\RequestValidatorSanitizer\Sanitizing\SanitizableTrait; class SimpleController extends AbstractController { use SanitizableTrait; public function action(Request $request) { // Санитизированный Request. $requestSanitized = $this->sanitizeRequest( $request, $this->getSanitizingRules() ); } /** * Правила санации. * * @return array */ private function getSanitizingRules(): array { return [ 'id' => 'trim|escape|strip_tags|cast:string', 'url' => 'trim|escape|strip_tags|cast:string', 'name' => 'trim|escape|strip_tags|cast:string', 'email' => 'trim|escape|strip_tags|cast:string', 'phone' => 'trim|escape|strip_tags|cast:string' ]; } }
Валидатор
С помощью https://github.com/illuminate/validation. В контроллере может быть реализован метод getRules
,
описывающий правила валидации в стадарте Illuminate Validation
. Или определено свойство типа массив rules
.
use Prokl\RequestValidatorSanitizer\Validation\Custom\CustomEmailValidatorNullable; use Prokl\RequestValidatorSanitizer\Validation\Custom\LaravelPhoneValidator; class SimpleController extends AbstractController { use ValidateableTrait; public function action(Request $request) { $this->validateRequest( $request, $this->getRules() ); } /** * Правила валидации. * * @return string[] */ private function getRules() : array { return [ 'name' => 'required|string', 'id' => 'string|nullable|min:3|max:60', 'url' => 'string|nullable|url', 'email' => ['nullable', new CustomEmailValidatorNullable], 'phone' => ['required', 'string', new LaravelPhoneValidator] ]; } }
Кастомные валидаторы
CustomEmailValidator
- Email, при помощи https://github.com/egulias/EmailValidatorCustomEmailValidatorNullable
- Email, может быть пустымCyrillicAlphaValidator
- в параметре только символы и пробелыCyrillicAlphaValidatorNullable
- в параметре только кириллические символы, может быть пустымLaravelPhoneValidator
- телефонный номер, при помощи https://github.com/giggsey/libphonenumber-for-phpLaravelPhoneValidatorNullable
- телефонный номер, может быть пустымJsonValidator
- проверка на json