proklung/controller-sanitizer-validator

通过特性实现Symfony应用程序的请求验证和清理

1.2.4 2021-08-08 16:52 UTC

This package is auto-updated.

Last update: 2024-09-08 23:33:03 UTC


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