Forms é uma biblioteca uspdev para criar formulários dinâmicos a partir de definições persistidas, renderizar HTML, validar submissões, persistir respostas e manipular arquivos enviados.
- Gera formulários a partir de definições armazenadas no banco.
- Processa submissões com validação e persistência.
- Permite validar dados sem persistir submissões.
- Suporta versões de definição por
name + version. - Usa a versão ativa quando
versioné omitida em chamadas públicas. - Mantém submissões presas a uma versão concreta de
FormDefinition. - Possui CRUD administrativo.
- Suporta Bootstrap 4 e 5.
- Requer Laravel 12.
composer require uspdev/forms
php artisan vendor:publish --tag=forms-config
php artisan migrateAs migrations do Forms V2 são carregadas diretamente pelo provider do pacote e não devem ser publicadas ou copiadas para a aplicação consumidora.
No arquivo config/laravel-usp-theme.php, a chave uspdev-forms faz o menu ficar visível apenas para administradores.
[
'key' => 'uspdev-forms',
],Sincroniza definições em .json para form_definitions.
php artisan forms:sync
php artisan forms:sync --path=storage/app/formsJsonO comando usa name + version para criar ou atualizar definições.
Cria ou substitui uma definição de exemplo chamada Demo Form, útil para testar a instalação e visualizar os tipos de campos disponíveis.
php artisan forms:demouse Uspdev\Forms\Facades\Forms;
$html = Forms::render('parecer_final', [
'action' => route('pareceres.store'),
]);use Illuminate\Http\Request;
use Illuminate\Validation\ValidationException;
use Uspdev\Forms\Facades\Forms;
public function store(Request $request)
{
try {
$submission = Forms::submit($request);
} catch (ValidationException $e) {
return back()->withErrors($e->validator)->withInput();
}
return redirect()->back()->with('alert-success', 'Formulário enviado com sucesso.');
}Em integrações sem o HTML gerado pelo pacote, informe a definição diretamente:
$submission = Forms::submit($request, 'parecer_final', 2);Definições ou versões inexistentes lançam InvalidArgumentException; dados
inválidos lançam ValidationException. A assinatura completa e os demais
fluxos públicos estão em API via facade.
Comece por Documentação técnica. Ela organiza os demais documentos na ordem recomendada de leitura.