意大利设计公司 / formbuilder
带有token CSRF的表单创建界面
1.0.2
2024-09-22 16:33 UTC
Requires
- php: ^8.3
- ext-dom: *
- ext-intl: *
- psr/simple-cache: 3.0.*
Requires (Dev)
- symfony/var-dumper: ^7.1
README
FormBuilder是一个强大的、灵活的PHP HTML表单创建界面,支持tokens CSRF和多种自定义选项。此包旨在帮助PHP开发者构建安全、可扩展的表单。
要求
- PHP >= 8.3
- Composer
安装
要安装此包,请使用Composer
composer require alessandrodesign/formbuilder
使用示例
创建表单
您可以通过两种方式创建表单实例:直接通过类或使用静态方法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 );
表单渲染
您可以直接使用render
方法或使用魔法方法__toString()
来渲染表单。
render
方法
<?php require './vendor/autoload.php'; echo $form->render();
__toString()
方法
<?php require './vendor/autoload.php'; echo $form;
表单结构
下面是一个如何使用不同字段类型构建表单的完整示例。
<?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(); }
使用选择框
选择框字段支持添加带或不带组的选项。
<?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();
使用按钮
将提交按钮添加到表单末尾。
<?php $form->button('Enviar', 'submit', 'btn btn-primary', 'Enviar'); echo $form->render();
使用Token CSRF进行安全保护
FormBuilder包含对CSRF保护的支持。要启用此功能,请使用方法useToken()
。
定义Token
$form->useToken();
Token验证
if (Form::validateToken()) { echo 'Token válido'; } else { throw new Exception('Token inválido'); }
贡献
欢迎贡献!请随意发送Pull Requests或在新GitHub中打开问题。
许可
此项目采用MIT许可证。