franzwegener / quantumforms
QuantumForms 是一个可定制的 FormBuilder,它在前后端使用相同的验证器。
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 19:09:31 UTC
README
QuantumForms 是一个易于定制的 FormBuilder,它在前后端使用相同的验证器。
功能
- 独立:无依赖,因此它是框架无关的,无需依赖管理
- 易于使用和扩展
- 通过向 Validators 目录添加类来添加验证器(所有验证器包括前端和后端部分)
- 通过向 JsErrorNotifiers 添加 js-closure 来添加 JavaScript 表单错误处理程序
- 通过向 FormElementsDirectory 添加类来添加新的表单元素类型
- 通过向 Forms 目录添加来交换表单构建器本身
- 低带宽(仅将您使用的验证器传输到客户端)
- PSR4
安装
使用 composer 安装 QuantumForms 非常简单
composer require franzwegener/quantumforms
或者,如果您的项目不使用 composer(QuantumForms 没有任何依赖,因此不需要 composer!),您只需包含并注册自动加载器。
require_once $quantumFormsRootPath.'/Autoloader.php'; $loader = new Autoloader(); $loader->register();
使用方法
表单定义
1). 实例化您的表单
$form = new Form('GET', '/desired/form/action.php', new Alert());
2). 定义您的表单元素,并将它们添加到您的表单中。这假设您已将表单绑定到 $form 变量。
$ageElement = new TextInput('age'); $ageElement->setValidators([new Integer()]); $form->addElement($ageElement); $nameElement = new TextInput('name'); $nameElement->setValidators([new Alphanumeric()]); $nameElement->setAttributes(['class' => 'form-control', 'id' =>'the-name-field']); $nameElement->setHtmlBefore('<div class="border">'); $nameElement->setHtmlAfter('<p>Some text</p></div>'); $form->addElement($nameElement); $submitElement = new Submit('submit'); $form->addElement($submitElement);
表单渲染
3). 将表单对象注入到您的视图中
<html> <head> <?= $form->renderJavascript(); ?> </head> <body> <?= $form->renderHtml(); ?> </body> </html>
扩展
扩展 QuantumForms 允许您向表单添加更多元素。
额外元素
1). 将新 FormElement 名称的文件添加到 /src/FormElements 目录 中,例如 src/FormElements/Example
一个示例扩展可能看起来像这样
namespace QuantumForms\FormElements; /** * Example FormElement */ class Example extends AbstractFormElement implements \Quantumforms\FormElementInterface { /** * (non-PHPdoc) * @see \QuantumForms\FormElements\AbstractFormElement::render() */ public function render() { $attributes = $this->getAttributesString(); return $this->htmlBefore.'<example '.$attributes.'/>'.$this->htmlAfter; } }
请确保您在测试目录中添加了您的元素测试,/tests/FormElements/Example.php。
如果您想将您的元素贡献回 QuantumForms 项目,请考虑提交包含您的更改的 pull request。
添加在表单错误时调用的 JavaScript 方法
将 JsErrorNotifier 名称的文件添加到 /src/JsErrorNotifiers 目录 中,例如 src/JsErrorNotifiers/Example
namespace QuantumForms\JsErrorNotifiers; /** * Example JsErrorNotifier */ class Example implements \QuantumForms\JsErrorNotifierInterface { public function getJsErrorNotifier() { return 'function (elementName, validatorName){ //do something }'; } }
将您的 JsErrorNotifier 的测试添加到 /tests/JsErrorNotifiers/Example.php
额外验证器
将验证器名称的文件添加到 /src/Validators 目录 中,例如 src/Validators/Example
namespace QuantumForms\Validators; use QuantumForms\Validator; use QuantumForms\ValidatorInterface; /** * Example Validator */ class Example extends AbstractValidator implements ValidatorInterface { /** * @return bool */ public function validate($input) { $bool = some_validation($input); return $bool; } /** * @return string */ public function getJavascriptValidator() { return 'function (input) { bool = some_validation(input); return bool; }'; } }
将您的验证器的测试添加到 /tests/Validators/Example.php
帮助与支持
此项目不带任何特定的支持计划,但我绝对喜欢在可能的情况下提供帮助。如果您遇到任何问题,请随时告诉我。只需 打开一个问题,我会尽力解决。