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
- 电子邮件,通过https://github.com/egulias/EmailValidatorCustomEmailValidatorNullable
- 电子邮件,可以为空CyrillicAlphaValidator
- 参数中只包含符号和空格CyrillicAlphaValidatorNullable
- 参数中只包含西里尔字母,可以为空LaravelPhoneValidator
- 电话号码,通过https://github.com/giggsey/libphonenumber-for-phpLaravelPhoneValidatorNullable
- 电话号码,可以为空JsonValidator
- 检查json