uspdev / forms
Formulários dinâmicos com persistência
Requires
- php: ^8.2
- illuminate/support: ^11.0
- spatie/laravel-activitylog: ^4.10
- uspdev/replicado: ^1.25
README
Forms é uma biblioteca uspdev que permite gerar formulários dinâmicos a partir de definições armazenadas em banco de dados e, opcionalmente, persiste os resultados.
Funcionalidades
- Gera formulários a partir de definições no BD;
- Processa a submissão dos formulários com validação e persistência;
- Mostra o resultado com views padrão;
- Possui crud completo para
admin
; - Suporta estilos em Bootstrap 4 e 5;
- Integra com aplicações Laravel 11 em diante.
Instalação
- Instale a biblioteca via Composer e publique as migrations
composer require uspdev/forms php artisan vendor:publish --tag=forms-migrations php artisan migrate
- Menu na aplicação
No arquivo config/laravel-usp-theme.php
, adicione ou reposicione a chave uspdev-forms para mostrar o menu. Ele será visível apenas para administradores.
[ 'key' => 'uspdev-forms', ],
Configuração
Você pode personalizar as configurações do pacote modificando o arquivo config/uspdev-forms.php
.
php artisan vendor:publish --tag=forms-config
Uso
-
Crie uma entrada na tabela form_definitions
-
Nome do formulário: nome único que identifica o formulário
-
Grupo: serve para agrupar vários formulários em implementações mais complexas
-
Descrição: campo livre sem uso específico no sistema
-
Campos: campos do formulário
- texto de 1 linha
[ { "name": "name", "type": "text", "label": "Nome (text)", "required": true }, ]
- dois campos na mesma linha
[ { "name": "name", "type": "text", "label": "Nome (text)", "required": true }, { "name": "email", "type": "email", "label": "Email (email)", "required": false } ],
- select simples
[ { "name": "rating", "type": "select", "label": "Avaliação (select)", "options": [ "1", "2", "3", "4", "5" ] } ]
- textarea
[ { "name": "message", "type": "textarea", "label": "Mensagem (textarea)" } ]
- file (upload de arquivo)
[ { "name": "arquivo", "type": "file", "label": "Arquivo", "accept": ".pdf, image/*" } ]
- pessoa-usp
[ { "name": "codpes", "type": "pessoa-usp", "label": "Pessoa (select2)", "required": true }, ]
- disciplina-usp
[ { "name": "coddis", "type": "disciplina-usp", "label": "Disciplina (select2)", "required": true } ]
FormDefinition::create($form);
- Gere o formulário na sua view:
Use a classe FormGenerator para renderizar o formulário no seu template Blade:
use Uspdev\Forms\Forms; $form = new Form($key = null, ['action' => route('sua-rota-do-action')]); $formHtml = $form->generateHtml('contact_form'); // conforme definido em $form // ....
- Trate as submissões do formulário:
No seu controller, trate a submissão do formulário salvando os dados no banco de dados:
public function store(Request $request) { $form = (new Form())->handleSubmission($request); // .... }
- Listar submissões Recupere todas as submissões em geral ou de um formulário específico:
$allSubmissions = $form->listSubmission(); // Ou $allFormNameSubmissions = $form->listSubmission('form-name');
- Obter submissão Recupere uma submissão específica pelo seu id:
$formSubmission = $form->getSubmission($formSubmissionId);
Campos
Tipos
- pessoa-usp: campo tipo select que faz busca no replicado e retorna uma pessoa. nome do campo recomendado: codpes;
- text: texto simples
- email: valida campos email
- select: precisa passar
options
- textarea:
- file: pode passar
"accept" : ".pdf, image/*"
Contribuindo
Contribuições são bem-vindas! Siga estes passos para contribuir:
- Faça um fork do repositório.
- Crie um novo branch (git checkout -b feature/SuaFuncionalidade).
- Faça suas alterações e commit (git commit -m 'Adiciona nova funcionalidade').
- Envie para o branch (git push origin feature/SuaFuncionalidade).
- Crie um novo Pull Request.
Licença
Este pacote está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.
Resumo do Conteúdo
- Visão Geral do Pacote: Descreve o que o pacote faz.
- Funcionalidades: Destaca as principais funcionalidades.
- Passos de Instalação: Fornece instruções detalhadas de instalação.
- Detalhes de Configuração: Guia sobre como personalizar as configurações.
- Exemplos de Uso: Mostra como criar um formulário YAML e usá-lo na sua aplicação.
- Guia de Contribuição: Incentiva contribuições com passos claros.
- Informações de Licença: Indica a licença