lucasnribeiro / form-forge
PHP的一个小型高效表单库
1.0.1
2024-07-29 18:48 UTC
Requires
- php: ^7.0 || ^8.0
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^6.5 || ^7.0 || ^8.0 || ^9.0
- squizlabs/php_codesniffer: ^3.5
- yoast/phpunit-polyfills: 2.0
README
FormForge
FormForge是一个基于面向对象的PHP表单构建器。本项目的目标是作为一个如何使用composer自动加载器和PSR-4构建库的例子。这里包含的抽象可以移植到许多其他使用面向对象的项目中。这还不是生产就绪的,它只是一个学习研究。
依赖关系
- Composer 2.4+
- PHP 7.0+ 或 8.0+
功能
- 流畅的API,易于表单创建和定制
- 支持各种输入类型(文本、电子邮件、选择等)
- 可定制的标签和提交按钮
- 表单方法和动作定制
- 基本验证支持
- 可扩展的架构
安装
您可以通过Composer安装FormForge
composer require lucasnribeiro/form-forge
类UML图
基本用法
use Lucasnribeiro\FormForge\Form; use Lucasnribeiro\FormForge\Inputs\InputFactory; $form = new Form(new InputFactory()); $form->setMethod('post') ->setAction('/submit-form') ->addField('name', 'text', ['label' => 'Your Name']) ->addField('email', 'email', ['label' => 'Your Email']) ->addField('country', 'select', [ 'label' => 'Country', 'options' => ['US' => 'United States', 'CA' => 'Canada', 'UK' => 'United Kingdom'] ]) ->submitButton() ->setValue('Send') ->addClass('btn-primary'); echo $form->render();
定制字段
您可以在添加字段后对其进行定制
$form->addField('email', 'email', ['label' => 'Your Email']) ->field('email') ->addClass('form-control') ->label() ->addClass('form-label');
定制提交按钮
$form->submitButton() ->setValue('Send Message') ->addClass('btn') ->addClass('btn-primary') ->addAttribute('id', 'contact-submit');
使用Tailwind的示例
<?php require_once __DIR__ . '/vendor/autoload.php'; use Lucasnribeiro\FormForge\FormBuilder; $form = FormBuilder::create(); $form->setMethod('post') ->setAction('/submit-contact') ->addField('name', 'text', ['label' => 'Full Name']) ->addField('email', 'email', ['label' => 'Email Address']) ->addField('subject', 'text', ['label' => 'Subject']) ->addField('message', 'textarea', ['label' => 'Your Message']); $form->field('name') ->addClass('mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50') ->label() ->addClass('block text-sm font-medium text-gray-700'); $form->field('email') ->addClass('mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50') ->label() ->addClass('block text-sm font-medium text-gray-700'); $form->field('subject') ->addClass('mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50') ->label() ->addClass('block text-sm font-medium text-gray-700'); $form->field('message') ->addClass('mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50') ->label() ->addClass('block text-sm font-medium text-gray-700'); $form->submitButton() ->setValue('Send Message') ->addClass('mt-4 px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>FormForge</title> <script src="https://cdn.tailwindcss.com"></script> </head> <body> <div class="flex flex-row justify-center mt-10"> <div class="w-96"> <?php echo $form->render(); ?> </div> </div> </body> </html>