FormBuilder é uma interface poderosa e flexível para criação de formulários HTML no PHP, com suporte para tokens CSRF e várias opções de personalização. Este pacote visa facilitar a construção de formulários seguros e escaláveis para desenvolvedores PHP.
- PHP >= 8.3
- Composer
Para instalar o pacote, utilize o Composer:
composer require alessandrodesign/formbuilderVocê pode criar instâncias de formulário de duas maneiras: diretamente pela classe ou utilizando o método estático create.
<?php
use AlessandroDesign\FormBuilder\Enums\EnctypeEnum;
use AlessandroDesign\FormBuilder\Enums\MethodEnum;
use AlessandroDesign\FormBuilder\Form;
require './vendor/autoload.php';
$form = new Form(
'formTeste',
MethodEnum::POST,
'https://localhost:8080/post',
EnctypeEnum::MultipartFormData
);<?php
use AlessandroDesign\FormBuilder\Enums\EnctypeEnum;
use AlessandroDesign\FormBuilder\Enums\MethodEnum;
use AlessandroDesign\FormBuilder\Form;
require './vendor/autoload.php';
$form = Form::create(
'formTeste',
MethodEnum::POST,
'https://localhost:8080/post',
EnctypeEnum::MultipartFormData
);Você pode renderizar o formulário diretamente usando o método render ou utilizando o método mágico __toString().
<?php
require './vendor/autoload.php';
echo $form->render();<?php
require './vendor/autoload.php';
echo $form;Abaixo está um exemplo completo de como estruturar um formulário com diferentes tipos de campos.
<?php
use AlessandroDesign\FormBuilder\Form;
require './vendor/autoload.php';
try {
$form = Form::create(
'formTeste',
MethodEnum::POST,
'https://localhost:8080/post',
EnctypeEnum::MultipartFormData
)->setClass('row g-3');
// Adiciona campos de texto, radio, checkbox e arquivos
$form->inputText('Nome', 'nome', placeholder: 'Digite seu nome')
->addClassElement('form-control')
->addParent('col-md-6', 'input-group');
$form->inputRadio('Gênero', 'genero', options: ['Masculino', 'Feminino'])
->addClassElement('form-check-input')
->addParent('col-md-6', 'input-group');
$form->inputCheckbox('Preferências', 'preferencias', options: ['Opção 1', 'Opção 2'])
->addClassElement('form-check-input')
->addParent('col-md-6', 'input-group');
$form->inputFile('Anexar Arquivo', 'anexo')
->addClassElement('form-control')
->addParent('col-md-12', 'input-group');
echo $form->render();
} catch (DOMException $e) {
echo $e->getMessage();
}O campo select suporta a adição de opções com ou sem grupos.
<?php
use AlessandroDesign\FormBuilder\Form;
$form = Form::create(
'formSelect',
MethodEnum::POST,
'https://localhost:8080/post'
);
$form->select('Escolha uma opção', 'opcao')
->addOptions([
'Grupo 1' => ['valor1' => 'Opção 1', 'valor2' => 'Opção 2'],
'Grupo 2' => ['valor3' => 'Opção 3', 'valor4' => 'Opção 4']
])
->addClassElement('form-select')
->addParent('col-md-12');
echo $form->render();Adicione botões de envio ao final do formulário.
<?php
$form->button('Enviar', 'submit', 'btn btn-primary', 'Enviar');
echo $form->render();O FormBuilder inclui suporte para proteção CSRF. Para ativar essa funcionalidade, use o método useToken().
$form->useToken();if (Form::validateToken()) {
echo 'Token válido';
} else {
throw new Exception('Token inválido');
}Contribuições são bem-vindas! Por favor, sinta-se à vontade para enviar Pull Requests ou abrir Issues no GitHub.
Este projeto é licenciado sob a MIT License.