perry-rylance/dom-form

一个基于DOMDocument的表单库,用于快速填充HTML表单,在服务器端使用HTML5表单验证元素进行用户输入验证,序列化和错误处理。

2.0.3 2024-05-05 09:32 UTC

This package is auto-updated.

Last update: 2024-09-05 10:12:57 UTC


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/

支持

请随意在这里打开问题或提交拉取请求。