Description

Use attributes to specify the corresponding validator, scenario or validated field

Install

composer require itwmw/engine-validate-attributes

Using

use Itwmw\Validate\Attributes\Validator;

class UserController
{
    #[Validator(validate: UserValidate::class, scene: 'login')]
    public function login()
    {
    }

    #[Validator(validate: UserValidate::class, fields: ['user', 'pass'])]
    public function register()
    {
    }
}

Validator has three parameters which are:

  • $validate The full namespace of the validator
  • $scene Scene name, if this value is provided, the $fields parameter is invalid
  • $fields Fields to be validated, array type

Middleware Usage

If you use the middleware provided by the validator, you can register this extension to the middleware configuration at:

use Itwmw\Validate\Attributes\ValidateAttributesFactory;
use Itwmw\Validate\Support\Storage\ValidateMiddlewareConfig;

ValidateMiddlewareConfig::instance()->setValidateFactory(new ValidateAttributesFactory());

Next, the middleware will automatically get the validator specified by the annotation to complete the validation

Standalone use

The specified validator can be obtained by

$validate = (new \Itwmw\Validate\Attributes\ValidateAttributesFactory())->getValidate(UserController::class,"login");

$validate->check($userInput);

The getValidate method takes two parameters

  • $controller Controller name or class name
  • $scene Method name or scene name, not required