danieltm / validation-io
validador do framework origins
V1.0.1
2025-02-20 19:01 UTC
Requires
- php: ^8.0
- danieltm/origins: ^1.6
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.
- 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
- 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); } }
- 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; } }
- 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.