perry-rylance / dom-form
一个基于DOMDocument的表单库,用于快速填充HTML表单,在服务器端使用HTML5表单验证元素进行用户输入验证,序列化和错误处理。
Requires
- php: >=8.2.0
- ext-dom: *
- perry-rylance/dom-document: ^3.0.0
Requires (Dev)
- phpdocumentor/phpdocumentor: ^3.1
- phpunit/phpunit: ^10.4.0
README
一个基于DOMDocument的表单库,用于快速填充HTML表单,在服务器端使用HTML5表单验证元素进行用户输入验证,序列化和错误处理。
预期用途是在你有某些页面渲染表单时,无论是用于新资源还是使用现有资源中的数据进行填充。当你想要处理提交时,你可以使用传入的数据(例如 $_POST)提交 表单。这将处理验证。一旦你对结果数据满意,你可以从表单中序列化它,放心地知道它已经在客户端和服务器端进行了验证。
专为与PerryRylance\DOMDocument一起使用而设计。
PerryRylance\DOMDocument的早期版本具有填充表单和获取数据的特性,但在2.*版本中删除了这些特性,因为该库的唯一重点是类似jQuery的PHP DOM操作,处理表单被认为超出了范围。与浏览器客户端验证的行为相比,这个库为你提供了这种功能,并具有更标准化的行为。
需求
- PHP >= 8.2
- Composer
安装
我建议通过Composer安装此包。
composer require perry-rylance/dom-form
使用
以下是一个非常基本的示例,假设你有一个名为 form.html 的文件,并且已要求自动加载器。
基本示例
$document = new DOMFormDocument();
$document->loadHTML('form.html');
$form = $document->find("form");
if(!empty($_POST))
{
if($data = $form->submit($_POST))
{
// NB: $data is validated and ready for use. You can do what you need, for example, store the data and redirect.
}
else
{
// NB: The data was not validated, you can do what you need, for example display $form in the invalid state.
}
}
echo $form->html;
错误处理
错误处理器是PerryRylance\DOMForm\Exceptions\Handlers\Handler的子类,并影响如何处理填充错误。
你可以将一个Handler传递给DOMForm的构造函数。如果你不提供,则默认为ThrowException,在表单填充期间验证失败时将抛出异常。
还提供了DisplayHtml,这将向验证失败的相应字段添加HTML错误消息。你可以使用它将表单以无效状态重新呈现给最终用户,以便他们可以纠正他们的输入。
测试
运行测试需要Docker。
可以使用tests.sh运行测试。
你可以像这样从你的本地CLI运行特定测试
docker-compose run php82 php /app/vendor/bin/phpunit tests --filter=testCannotAlterDisabledInput
文档
生成文档的要求如下
phpDocumentor必须安装。
要生成文档,请使用以下命令。
php <path/to/your/phpDocumentor.phar> -t ./docs --ignore vendor/
支持
请随意在这里打开问题或提交拉取请求。