uspdev/forms

Formulários dinâmicos com persistência

Maintainers

Package info

github.com/uspdev/forms

pkg:composer/uspdev/forms

Transparency log

Statistics

Installs: 1 004

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 3

1.0.0 2026-08-19 19:16 UTC

This package is auto-updated.

Last update: 2026-08-19 19:17:50 UTC


README

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.

Funcionalidades

  • 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.

Instalação

composer require uspdev/forms
php artisan vendor:publish --tag=forms-config
php artisan migrate

As 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.

Menu administrativo

No arquivo config/laravel-usp-theme.php, a chave uspdev-forms faz o menu ficar visível apenas para administradores.

[
    'key' => 'uspdev-forms',
],

Sincronização de formulários

Sincroniza definições em .json para form_definitions.

php artisan forms:sync
php artisan forms:sync --path=storage/app/formsJson

O comando usa name + version para criar ou atualizar definições.

Formulário de demonstração

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:demo

Exemplo rápido

use 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.

Documentação

Comece por Documentação técnica. Ela organiza os demais documentos na ordem recomendada de leitura.