lexal/form-submitter

v2.0.0 2023-12-26 22:21 UTC

This package is auto-updated.

Last update: 2024-09-26 23:47:56 UTC


README

PHPUnit, PHPCS, PHPStan Tests

使用此包,您可以提交表单实体,例如将其保存到数据库中。该包可以在表单完成事件中使用 Stepped Form 包。

要求

PHP >=8.1

安装

通过 Composer

composer require lexal/form-submitter

使用方法

  1. 为特定实体创建一个表单提交器。表单提交器可以返回数据,这些数据将在调用 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;
        }
    }
  2. 在您的应用程序中使用表单提交器。

    $entity = new Customer();
    $formSubmitter = new CustomerFormSubmitter();
    
    if ($formSubmitter->supportsSubmitting($entity)) {
        $formSubmitter->submit($entity);
    }

您可以使用以下内置表单提交器

  1. FormSubmitter - 包含一系列提交器,并将表单实体提交给支持提交的第一个。

    use Lexal\FormSubmitter\FormSubmitter;
    
    $formSubmitter = new FormSubmitter(
        new CustomerFormSubmitter(),
    );
    
    $formSubmitter->submit(new Customer());
  2. 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