danieltm/validation-io

validador do framework origins

V1.0.1 2025-02-20 19:01 UTC

This package is auto-updated.

Last update: 2025-02-20 19:03:05 UTC


README

Este projeto implementa um sistema de validação para o framework Origins, permitindo que os usuários definam e utilizem regras de validação personalizadas.

Funcionalidades

  • Validações baseadas em atributos (#[Attribute]).
  • Suporte a validações nativas (NotEmpty, Email, etc.).
  • Possibilidade de criação de validações personalizadas.
  • Integração com controllers do Origins através de #[Valid].

Instalação

Este validador depende do framework Origins. Certifique-se de que ele já está instalado antes de continuar.

  1. Adicione o validador ao seu projeto utilizando o Composer:
    composer require danieltm/validation-io

Como Usar

1 Criando um Modelo com Validações

use Daniel\Validator\Valid\Email;
use Daniel\Validator\Valid\NotEmpty;

final class ModelValidation
{
    #[NotEmpty]
    private string $nome;

    #[Email]
    private string $email;
}

2 Criando um Controller com Validação

use Daniel\Origins\Controller;
use Daniel\Origins\Get;
use Daniel\Origins\Request;
use Daniel\Validator\Props\Valid;

#[Controller]
final class TesteController
{
    #[Get("/")]
    #[Valid(ModelValidation::class)]
    function index(Request $request) {
        // A validação será processada automaticamente
    }
}

Criando uma Validação Personalizada

  1. Crie um atributo que estenda AbstractValidation e informe o provedor de validação:
    use Daniel\Validator\Props\AbstractValidation;
    use Attribute;
    
    #[Attribute(Attribute::TARGET_PROPERTY)]
    #[ValidationProvider(new MinLengthValidator())]
    class MinLength extends AbstractValidation
    {
        public function __construct(private int $length, string $message = "Valor muito curto.") {
            parent::__construct($message);
        }
    }
  2. Crie um provedor que implemente BaseValidator:
    use Daniel\Validator\BaseValidator;
    
    class MinLengthValidator implements BaseValidator
    {
        private int $length;
    
        public function __construct(int $length)
        {
            $this->length = $length;
        }
    
        public function isValid($value): bool
        {
            return strlen($value) >= $this->length;
        }
    }
  3. Agora você pode usar #[MinLength(5)] em suas propriedades!

Licença

Este projeto é distribuído sob a licença MIT.

Para mais informações, acesse Origins Framework.