lexal / form-submitter
表单提交器
v2.0.0
2023-12-26 22:21 UTC
Requires
- php: >=8.1
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: ^1.0.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
- roave/security-advisories: dev-latest
- webimpress/coding-standard: ^1.3
This package is auto-updated.
Last update: 2024-09-26 23:47:56 UTC
README
使用此包,您可以提交表单实体,例如将其保存到数据库中。该包可以在表单完成事件中使用 Stepped Form 包。
要求
PHP >=8.1
安装
通过 Composer
composer require lexal/form-submitter
使用方法
-
为特定实体创建一个表单提交器。表单提交器可以返回数据,这些数据将在调用
submit
方法时返回。use Lexal\FormSubmitter\FormSubmitterInterface; final class CustomerFormSubmitter implements FormSubmitterInterface { public function supportsSubmitting(mixed $entity): bool { return $entity instanceof Customer; } public function submit(mixed $entity): mixed { // save entity to the database return $entity; } }
-
在您的应用程序中使用表单提交器。
$entity = new Customer(); $formSubmitter = new CustomerFormSubmitter(); if ($formSubmitter->supportsSubmitting($entity)) { $formSubmitter->submit($entity); }
您可以使用以下内置表单提交器
-
FormSubmitter
- 包含一系列提交器,并将表单实体提交给支持提交的第一个。use Lexal\FormSubmitter\FormSubmitter; $formSubmitter = new FormSubmitter( new CustomerFormSubmitter(), ); $formSubmitter->submit(new Customer());
-
TransactionalFormSubmitter
- 在事务中提交表单实体(例如,数据库事务)。use Lexal\FormSubmitter\FormSubmitter; use Lexal\FormSubmitter\Transaction\TransactionInterface; use Lexal\FormSubmitter\TransactionalFormSubmitter; final class DatabaseTransaction implements TransactionInterface { public function start(): void { // start transaction } public function commit(): void { // commit transaction } public function rollback(): void { // rollback transaction } } $submitter = new TransactionalFormSubmitter( new FormSubmitter(new CustomerFormSubmitter()), new DatabaseTransaction(), ); $submitter->submit(new Customer());
许可证
Form Submitter 在 MIT 许可证下授权。有关完整许可证文本,请参阅 LICENSE。