risetechapps/form-request-for-laravel
Composer 安装命令:
composer require risetechapps/form-request-for-laravel
包简介
Package Form Request
关键字:
README 文档
README
📌 Sobre o Projeto
O Laravel Form Request é um package para Laravel que gerencia as regras de validação dos formulários de forma dinâmica, permitindo definir regras tanto via código quanto via banco de dados.
✨ Funcionalidades
- 📋 Forms dinâmicos - Regras de validação configuráveis em banco de dados
- 📁 Forms via código - Regras definidas em classes PHP
- 🔐 Validadores customizados - CPF, CNPJ, uniqueJson, required_if_any
- ⚡ Cache - Cache automático das regras para melhor performance
- 🔄 Export/Import - Migração de regras entre ambientes
- 📊 Estatísticas - Monitoramento e análise de uso
🚀 Instalação
1⃣ Requisitos
- PHP >= 8.3
- Laravel >= 12
- Composer instalado
2⃣ Instalação do Package
composer require risetechapps/form-request-for-laravel
3⃣ Publicar Configuração
php artisan vendor:publish --tag=config
4⃣ Executar Migrations
php artisan form-request:migrate
5⃣ (Opcional) Popular regras padrão
php artisan form-request:seed
📋 Comandos Artisan
Gerenciamento de Regras
| Comando | Descrição |
|---|---|
php artisan form-request:list |
Lista todas as regras em formato de tabela |
php artisan form-request:list --database |
Lista apenas regras do banco |
php artisan form-request:list --config |
Lista apenas regras em código |
php artisan form-request:list --form=clients |
Filtra por formulário específico |
php artisan form-request:list --field=email |
Filtra por campo específico |
Exportar/Importar
# Exportar todas as regras php artisan form-request:export --file=regras.json # Exportar apenas um formulário php artisan form-request:export --file=clients.json --form=clients # Importar regras php artisan form-request:import --file=regras.json # Importar e sobrescrever existentes php artisan form-request:import --file=regras.json --force
Cache
# Pré-carregar cache de todos os formulários php artisan form-request:warm-cache # Pré-carregar cache de um formulário específico php artisan form-request:warm-cache --form=clients # Limpar cache de um formulário php artisan form-request:clear-cache clients # Limpar cache de todos os formulários php artisan form-request:clear-cache --all
Validação e Estatísticas
# Validar sintaxe das regras php artisan form-request:validate-rules # Estatísticas básicas php artisan form-request:stats # Estatísticas detalhadas php artisan form-request:stats --detailed
📝 Uso
Usando a Trait HasFormValidation
Crie um FormRequest que utiliza as regras dinâmicas:
use RiseTechApps\FormRequest\Traits\HasFormValidation\HasFormValidation; use RiseTechApps\FormRequest\ValidationRuleRepository; class StoreClientRequest extends FormRequest { use HasFormValidation; protected ValidationRuleRepository $ruleRepository; protected array $result = []; public function __construct(ValidationRuleRepository $validatorRuleRepository) { parent::__construct(); $this->ruleRepository = $validatorRuleRepository; $this->result = $this->ruleRepository->getRules('clients'); } public function rules(): array { return $this->result['rules']; } public function messages(): array { return $this->result['messages']; } public function authorize(): bool { return auth()->check() && auth()->user()->hasPermission('clients.store'); } }
Registrando Regras via Código
Opção 1: Usando FormRequest::register()
No AppServiceProvider ou em um Service Provider:
use RiseTechApps\FormRequest\FormRequest; public function boot(): void { FormRequest::register('clients', [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:clients,email', 'cpf' => 'required|cpf', 'phone' => 'nullable|string', ], [ 'name.required' => 'O nome é obrigatório', 'email.unique' => 'Este email já está cadastrado', 'cpf.cpf' => 'CPF inválido', ], [ 'description' => 'Regras de validação para clientes', ]); }
Opção 2: Usando RulesContract (Recomendado para projetos grandes)
Crie uma classe de regras:
<?php namespace App\Rules; use RiseTechApps\FormRequest\Contracts\RulesContract; class ClientsRule implements RulesContract { public static function Rules(): array { return [ 'store_client' => [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:clients,email', 'cpf' => 'required|cpf', ], 'update_client' => [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:clients,email', ], ]; } public static function Messages(): array { return [ 'store_client' => [ 'name.required' => 'O nome do cliente é obrigatório', 'email.required' => 'O email é obrigatório', 'email.email' => 'Informe um email válido', 'email.unique' => 'Este email já está cadastrado', 'cpf.required' => 'O CPF é obrigatório', 'cpf.cpf' => 'CPF inválido', ], 'update_client' => [ 'name.required' => 'O nome do cliente é obrigatório', 'email.unique' => 'Este email já está em uso por outro cliente', ], ]; } public static function Validator(): array { return [ // Validadores customizados específicos deste módulo ]; } }
Registre no AppServiceProvider:
use RiseTechApps\FormRequest\RulesRegistry; use App\Rules\ClientsRule; public function boot(RulesRegistry $rulesRegistry): void { $rulesRegistry->register(ClientsRule::class); }
Vantagens desta abordagem:
- Separação de responsabilidades
- Facilidade de manutenção
- Suporte a múltiplos formulários em uma única classe
- Organização por módulo
API RESTful
O pacote expõe endpoints para gerenciar formulários via API:
// Em routes/api.php use RiseTechApps\FormRequest\FormRequest; FormRequest::routes([ 'middleware' => ['auth:sanctum'], 'prefix' => 'admin' ]);
Endpoints disponíveis:
GET /api/admin/forms- Listar formuláriosPOST /api/admin/forms- Criar formulárioGET /api/admin/forms/{id}- Ver formulárioPUT /api/admin/forms/{id}- Atualizar formulárioDELETE /api/admin/forms/{id}- Remover formulário
🔐 Validadores Customizados
O pacote inclui validadores extras:
| Regra | Descrição | Exemplo |
|---|---|---|
cpf |
Valida CPF brasileiro | 'cpf' => 'required|cpf' |
cnpj |
Valida CNPJ brasileiro | 'cnpj' => 'required|cnpj' |
uniqueJson |
Valida unicidade em coluna JSON | 'email' => 'uniqueJson:users,preferences.email' |
required_if_any |
Requerido se qualquer campo for preenchido | 'field' => 'required_if_any:field_a,field_b' |
⚛️ Configuração
Arquivo config/rules.php:
return [ // Regras definidas em código 'forms' => [ 'user_registration' => [ 'rules' => [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', ], 'messages' => [ 'email.unique' => 'validation.email_unique', ], 'metadata' => [ 'description' => 'Default rules for user registration forms.', ], ], ], // Configuração de cache 'cache' => [ 'enabled' => true, 'ttl' => 300, // segundos 'store' => null, // null = cache padrão ], ];
🏛️ Arquitetura
Estrutura de Banco
Tabela form_requests:
id- UUIDform- Nome/chave do formulário (unique)rules- JSON com as regrasmessages- JSON com mensagens personalizadasdata- Metadados adicionaisdescription- Descriçãotimestamps- created_at, updated_at
Fluxo de Resolução
- Cache - Verifica se existe no cache
- Banco de Dados - Busca regras persistidas
- Configuração - Busca regras definidas em código
- Mensagens - Gera mensagens padrão se necessário
🤝 Contribuição
Sinta-se à vontade para contribuir! Basta seguir estes passos:
- Faça um fork do repositório
- Crie uma branch (
feature/nova-funcionalidade) - Faça um commit das suas alterações
- Envie um Pull Request
📜 Licença
Este projeto é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
💡 Desenvolvido por Rise Tech
risetechapps/form-request-for-laravel 适用场景与选型建议
risetechapps/form-request-for-laravel 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 558 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 02 月 11 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「form-request」 「risetech」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 risetechapps/form-request-for-laravel 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 risetechapps/form-request-for-laravel 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 risetechapps/form-request-for-laravel 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Form request is a package for Lumen that lets developer validate form requests like Laravel does.
Laravel Form Request adaptation for Lumen framework.
A chainable rule builder for Laravel validation.
Has Uuid Laravel
Adds the Laravel ability to separate validations from the controller
统计信息
- 总下载量: 558
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 23
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-02-11