PHPackages                             ueb/form - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. ueb/form

ActiveLibrary

ueb/form
========

Gerador de código fonte para operações CRUD

3.1.00(2mo ago)01.1k1MITMustachePHP &gt;=7.1

Since Dec 11Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/edineibauer/uebForm)[ Packagist](https://packagist.org/packages/ueb/form)[ RSS](/packages/ueb-form/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (1)Versions (269)Used By (1)

uebForm
=======

[](#uebform)

Biblioteca PHP para geração dinâmica de formulários baseados em dicionários de metadados de entidades. Permite criar, editar e validar formulários de maneira automatizada e consistente.

Principal Funcionalidade
------------------------

[](#principal-funcionalidade)

**A principal funcionalidade desta biblioteca é a view de formulário**, que permite gerar formulários completos através de uma URL simples:

```
/form/{entidade}/{id}/{campos_opcionais}

```

Por exemplo:

- `/form/clientes/2` - Editar o cliente com ID 2
- `/form/produtos/null` - Criar um novo produto
- `/form/usuarios/5/nome,email,telefone` - Editar o usuário 5, mostrando apenas os campos especificados

Esta abordagem torna extremamente fácil implementar CRUDs completos sem necessidade de codificação adicional para cada entidade.

Funcionalidades
---------------

[](#funcionalidades)

- **Geração Dinâmica**: Cria formulários automaticamente a partir de dicionários de metadados
- **Suporte a Diversos Tipos de Campos**: Input, textarea, select, checkbox, radio, switch, upload de arquivos, etc.
- **Relacionamentos**: Gerencia relacionamentos entre entidades (one-to-one, one-to-many, many-to-many)
- **Validação Cliente/Servidor**: Validação em JavaScript e PHP
- **Customização**: Personalize a aparência e comportamento dos formulários
- **Autocomplete**: Funcionalidade de preenchimento automático para campos relacionais
- **Responsivo**: Formulários adaptáveis a diferentes tamanhos de tela

Instalação
----------

[](#instalação)

```
composer require ueb/form
```

Como Usar
---------

[](#como-usar)

### 1. Via URL (Método Principal)

[](#1-via-url-método-principal)

Simplesmente acesse a URL no formato:

```
// Criar novo registro
/form/{entidade}

// Editar registro existente
/form/{entidade}/{id}

// Especificar campos
/form/{entidade}/{id}/{campo1}/{campo2}

// Opções de exibição
/form/{entidade}/{id}/form-no-header  // Sem cabeçalho
/form/{entidade}/{id}/form-no-card    // Sem card

```

O formulário será gerado automaticamente com base no dicionário de metadados da entidade.

### 2. Integração com JavaScript

[](#2-integração-com-javascript)

Para carregar um formulário dentro de uma div específica em sua página:

```
// Carrega o formulário na div #container
pageTransition("form/clientes/5", "#container");

// Carrega formulário com campos específicos
pageTransition("form/clientes/5/nome/email/telefone", "#container");
```

### 3. Query String Avançada

[](#3-query-string-avançada)

Você pode passar parâmetros adicionais via query string:

```
// Carregar com valores padrão
/form/clientes?defaults={"status":1,"tipo":"PF"}

// Especificar callback JavaScript após salvamento
/form/clientes?callback=reloadTable

// Desativar salvamento automático
/form/clientes?autosave=0

// Aplicar CSS customizado
/form/clientes?css=.custom-field{background:#f5f5f5}

```

### 4. Configuração de Rota (opcional)

[](#4-configuração-de-rota-opcional)

Para implementar a rota `/form/`, você pode adicionar:

```
// Em seu arquivo de rotas
Router::route('/form/:entity/:id', function($data) {
    $entity = $data['entity'];
    $id = $data['id'];
    include PATH_HOME . 'vendor/ueb/form/public/view/form/form.php';
});
```

### 5. Uso Programático (alternativo)

[](#5-uso-programático-alternativo)

```
// Criar um formulário para a entidade "produtos"
$form = new Form\Form("produtos");

// Exibir todos os campos da entidade
$form->showForm();

// Ou especificar campos desejados
$form->setFields(["nome", "descricao", "preco"]);
$form->showForm();

// Carregar formulário para edição
$form->showForm(5); // Carrega o registro com ID 5 para edição
```

Recursos Avançados
------------------

[](#recursos-avançados)

### Formulários com Sub-formulários

[](#formulários-com-sub-formulários)

Para entidades com relacionamentos, é possível carregar sub-formulários:

```
// Carregar formulário de cliente com sub-formulário de endereços
/form/clientes/5?loadRelated=enderecos

// Carregar formulário de pedido com sub-formulários de itens em formato tabular
/form/pedidos/10?loadRelated=itens&itemsLayout=table

```

### Formulários com Etapas (Wizard)

[](#formulários-com-etapas-wizard)

Para formulários complexos que necessitam ser divididos em etapas:

```
// Definir formulário com etapas
/form/clientes?wizard=true&steps=dadosPessoais,endereco,configuracoes

// Acessar uma etapa específica
/form/clientes/5?wizard=true&currentStep=2

```

### Modos de Visualização

[](#modos-de-visualização)

```
// Modo somente leitura
/form/clientes/5?readOnly=true

// Modo de impressão
/form/clientes/5?printMode=true

// Modo de comparação (antes/depois)
/form/clientes/5?compareWith=4

```

### Agrupamento de Campos em Seções

[](#agrupamento-de-campos-em-seções)

```
// Agrupar campos em seções com títulos
/form/clientes?groupFields=pessoal:nome,email,telefone;endereco:rua,numero,cidade

```

### Eventos JavaScript

[](#eventos-javascript)

A biblioteca dispara eventos que podem ser capturados para personalização:

```
// Evento disparado após carregar o formulário
$(document).on("formLoaded", function(e, formData) {
    console.log("Formulário carregado:", formData.entity);
});

// Evento disparado após salvar com sucesso
$(document).on("formSaved", function(e, response) {
    notifySuccess("Registro salvo com sucesso!");
});
```

### API JavaScript Avançada

[](#api-javascript-avançada)

```
// Obter instância do formulário
var formInstance = $("#form-container").data("formInstance");

// Acessar métodos e propriedades
formInstance.getData(); // Obter todos os dados atuais
formInstance.setFieldValue("nome", "Novo Valor"); // Definir valor
formInstance.validate(); // Validar manualmente
formInstance.save(); // Salvar manualmente

// Limpar formulário
formInstance.clear();

// Recarregar dados originais
formInstance.reload();
```

Personalização
--------------

[](#personalização)

```
// Definir valores padrão para novos registros
$form = new Form\Form("usuarios");
$form->setDefaults([
    "status" => 1,
    "data_cadastro" => date("Y-m-d")
]);

// Personalizar botão de salvar
$form->setSaveButtonText("Cadastrar Usuário");
$form->setSaveButtonIcon("person_add");
$form->setSaveButtonClass("btn-large");

// Desativar salvamento automático
$form->setAutoSave(false);

// Definir callback após salvamento
$form->setCallback("reloadTable");
```

Tipos de Campos Suportados
--------------------------

[](#tipos-de-campos-suportados)

- **Input**: Texto, número, email, telefone, CPF, CNPJ, CEP, etc.
- **Textarea**: Campos de texto multilinha
- **Select**: Dropdown com opções
- **Checkbox/Radio**: Seleção única ou múltipla
- **Switch**: Toggle on/off
- **File**: Upload de arquivos
- **List**: Campos relacionais
- **List\_mult**: Relações múltiplas
- **Extend**: Campos de extensão para relacionamentos complexos

Opções da URL
-------------

[](#opções-da-url)

A URL oferece algumas opções especiais:

- `form-no-header`: Esconde o cabeçalho do formulário
- `form-no-card`: Remove o estilo de card do formulário

Exemplo:

```
/form/clientes/2/form-no-header/form-no-card/nome/email

```

Endpoints
---------

[](#endpoints)

A biblioteca disponibiliza vários endpoints para processamento:

- `/post/save/form.php`: Salva dados do formulário
- `/post/api.php`: API principal para interação com formulários
- `/post/autocomplete/form.php`: Gerencia autocomplete de campos
- `/post/children/form.php`: Gerencia formulários filhos
- `/post/read/list.php`: Leitura de listas relacionais

Templates Personalizáveis
-------------------------

[](#templates-personalizáveis)

A biblioteca utiliza templates Mustache para renderização. Cada tipo de campo possui seu próprio template:

- `input.mustache` - Campos de texto, número, etc.
- `select.mustache` - Dropdowns
- `checkbox.mustache` - Caixas de seleção
- `file.mustache` - Upload de arquivos
- etc.

Você pode personalizar estes templates para adaptar a aparência dos formulários ao seu design.

Requisitos
----------

[](#requisitos)

- PHP 7.2 ou superior
- MySQL/MariaDB
- Bibliotecas de dependência:
    - Entity (para gerenciamento de dicionários de metadados)
    - Helpers (para funções auxiliares)
    - Conn (para conexão com banco de dados)

Contribuindo
------------

[](#contribuindo)

Contribuições são bem-vindas! Por favor, sinta-se à vontade para enviar um Pull Request.

Licença
-------

[](#licença)

Este projeto está licenciado sob a [MIT License](LICENSE).

###  Health Score

49

—

FairBetter than 95% of packages

Maintenance83

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Recently: every ~105 days

Total

268

Last Release

86d ago

Major Versions

1.1.16 → 2.0.002020-06-13

2.0.51 → 3.0.02022-01-13

PHP version history (2 changes)1.0.00PHP ^7.1

2.0.16PHP &gt;=7.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/c28d8cf4f82305306db22ce306a435f7826e82179ad82590a66e68ec35a5d324?d=identicon)[nenabauer](/maintainers/nenabauer)

---

Top Contributors

[![edineibauer](https://avatars.githubusercontent.com/u/8617705?v=4)](https://github.com/edineibauer "edineibauer (304 commits)")

### Embed Badge

![Health badge](/badges/ueb-form/health.svg)

```
[![Health](https://phpackages.com/badges/ueb-form/health.svg)](https://phpackages.com/packages/ueb-form)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
