packg / htmlbuilder
使用数据源、装饰器、处理器和验证器在PHP中构建高级表单
Requires
- php: 8.0.*
Requires (Dev)
- pckg-app/frontend-dev: dev-next-8.0 as dev-master
- pckg/collection: dev-next-8.0 as dev-master
- pckg/concept: dev-next-8.0 as dev-master
- pckg/database: dev-next-8.0 as dev-master
- pckg/framework: dev-next-8.0 as dev-master
This package is auto-updated.
Last update: 2024-09-15 19:56:13 UTC
README
功能
Htmlbuilder 以简洁为设计理念。使用验证器在客户端和服务器端自动验证数据,并通知用户错误。数据源允许您将不同类型的数据绑定到表单、字段集、字段或其他元素,并让它们发挥作用——它们只需知道如何在数据源、PHP、HTML和JS之间传输值。通过处理器,您可以快速向元素添加功能并组织您的逻辑。装饰器主要用于设计字段。如果您在项目中使用某种类型的 Twitter Bootstrap 主题,则只需编写一次装饰器逻辑,并将其应用于所有表单。或者,您可以简单地使用我们预编码的 Bootstrap 表单,并让它“发挥作用”。最后,插件。我们为 TWIG 和 Blade 模板系统准备了插件,因此您可以在 PHP 中编码表单的核心,然后添加类、重新排序元素或设计字段。
表单
表单
use Htmlbuilder\Form;
class EmptyForm extends Form {
public function run() {
$this->addText('name');
}
}
... 生成 ...
<form method="post">
<fieldset>
<input type="text" name="name" />
</fieldset>
</form>
Bootstrap
use Htmlbuilder\Form\Bootstrap as Form;
class EmptyForm extends Form {
public function run() {
$this->addText('name')->setLabel('Name');
}
}
... 生成 ...
<form method="post">
<fieldset>
<div class="form-group">
<label class="col-lg-3" for="name">Name</label>
<div class="col-lg-9">
<input type="text" name="name" value="" id="name" class="form-control">
</div>
</div>
</fieldset>
</form>
验证器
所有字段都已添加验证器(例如,Htmlbuilder\Element\Input\Datetime 有 Htmlbuilder\Validator\Datetime 验证器)。
必填
$field->require();
电子邮件
$field->requireEmail();
文本
$field->requireMin();
$field->requireMax();
$field->requireBetween();
数字
$field->requireInteger();
$field->requirePositive();
$field->requireNegative();
$field->requireEmpty();
$field->requireFloat();
$field->requireCurrency();
$field->requireMin();
$field->requireMax();
$field->requireBetween();
日期、时间和日期时间
$field->requireDate();
$field->requireTime();
$field->requireDatetime();
$field->requireMin();
$field->requireMax();
$field->requireBetween();
$field->requireFuture();
$field->requirePast();
正则表达式
$field->requireRegex();
数据源
数组
$element->fillWithArray(['name' => 'Bill Clinton']);
对象
对象数据源会自动使用现有和可访问的获取器、设置器和公共属性填充元素的值。
$element->fillWithObject($user);
记录(LFW/数据库/记录)
与对象数据源类似,但它还提供了一些额外的功能。
$element->fillWithRecord($rUser);
POST / 请求 / 会话 / Cookie
与其他数据源类似,它们提供自动从请求变量中存储和检索数据的功能。
$element->fillWithPost($rUser);
处理器
处理器基本上是元素的装饰器,因此您可以通过创建新的处理器并将其添加到元素的处理器列表中,简单地向特定元素或元素组添加功能。这就是我们处理 addText()、addNumber() 和 getClosest() 的方法。
基本
查询
装饰器
这确实是装饰器,因为它们是在生成 HTML 的过程中执行的。基本元素仅打印元素名称(例如:div)和属性(例如:class="bordered")。使用装饰器,您可以将表单及其值绑定到 AngularJS 模型、启用 onSuccess 和 onError JavaScript 处理器。或者将输入包装在 Twitter Bootstrap HTML 中、启用 Csrf 保护和高级 JavaScript 验证。
AngularJS
Bootstrap
Csrf
插件
每个网络开发人员都知道,您不能仅使用 PHP 来构建表单。您不能将每个设计更改都放入 HTML 装饰器中,所以我们通过在模板引擎中创建宏、片段或您称之为它们的来解决这个问题,以更改表单。从现在起,您将能够在模板引擎中将所有逻辑放入 PHP 中,并在 HTML 中更改字段位置、某些属性或直接在模板引擎中添加按钮。
TWIG
{{ form.open }}
<p>Some HTML ...</p>
{{ form.field.name }}
<p>Some HTML ...</p>
{{ form.fieldset.index }}
<p>Some HTML ...</p>
{{ form.buttonset }}
<p>Some HTML ...</p>
{{ form.close }}
Blade
备注
请注意,Htmlbuilder(目前)尚未准备好投入生产使用。我们还需要编写一些功能测试和单元测试,准备示例,优化和编写代码。=)