Skip to content

Repository files navigation

Forms

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.

About

Gerador de formulários dinâmicos com persistência

Resources

Stars

0 stars

Watchers

10 watching

Forks

Releases

Packages

Used by

Contributors

Languages