farconada/helpers-bundle

辅助包,Fer风格

安装: 35

依赖项: 1

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.8 2015-10-13 09:15 UTC

This package is not auto-updated.

Last update: 2024-10-02 09:21:21 UTC


README

包含常用类和元素的库

功能

BodyListener,转换请求JSON

如果发送JSON请求,则将请求体转换为Symfony参数。

ParamConverter,从参数创建命令

从一个带有参数的请求构建一个Command类型的对象。

转换器名为 "array2command_converter"。选项

  • "param":JSON中的参数名称或 "_root"(如果考虑整个JSON对象从根开始)。
  • "include_route_params" [true|false],如果为true,则将请求参数和路由参数进行数组合并。

转换器还会在命令类型的对象上执行验证器,如果存在错误,则抛出 ValidationException 类型的异常。

/**
 * @Route(path="/test/{id}")
 * @ParamConverter("productCommand", class="AppBundle\Command\Message\NewProduct", options={"param": "_root", "include_route_params": true}, converter="array2command_converter")
 */
public function testAction($productCommand)
{
    dump($productCommand);
}

约束验证器:ChoiceFromConfig

几乎与Symfony的Choice验证器相同,但从中提取可能的选项来自parameters.yml配置。

use Fer\HelpersBundle\Validator\Constraints as CustomAssert;

/**
 * @Assert\NotBlank()
 * @CustomAssert\ChoiceFromConfig(configEntry="project.authors")
 */
public $person;

它们是Symfony的Choice选项,但"choices"改为"configEntry",它必须指向参数中的数组。

project.authors:
      - fernando
      - fran

TbbcRestUtil ValidationErrorFactory

如果已配置TbbcRestUtil包,则可以使用 ValidationErrorFactory 类,该类从 ValidationException 类型的异常创建一个易于在JSON中显示的Error Response。

tbbc_rest_util:
    error:
        use_bundled_factories: true
        exception_mapping:
            Array2CommandConverterException:
                class: "Fer\\HelpersBundle\\Exception\\Array2CommandConverterException"
                factory: validation_errors
                http_status_code: 400
                error_code: 400101
                error_message: "Invalid input"
                error_more_info_url: ""

特性

ClassToArrayTrait

定义一个受保护的方法 protected classToArray(),它返回一个包含类属性及其值的关联数组。

ArrayToPropertiesTrait

定义一个受保护的方法 protected arrayToProperties($dataArray),它接受一个关联数组并将值分配给类的属性。

控制器

####CsrfController

用于发布一个URL,在该URL上生成一个CSRF token /csrf/{intention} 响应是包含值和意图的JSON。

Csrf Annotation

检查action的CSRF token

        /**
         * @Csrf(intention="form")
         * @Route(path="/test/{id}")
         * @ParamConverter("productCommand", class="AppBundle\Command\Message\NewProduct", options={"param": "_root", "include_route_params": true}, converter="array2command_converter")
         */
        public function testAction($productCommand)
        {
            return new Response("It works");
        }

CQRS

UuidGenerator

UuidGenerator 类定义了一个静态方法 generate(),它返回一个UUID4类型的字符串。

RepositoryInterface

接口定义了Repository必须实现的基本方法

  • nextIdentity() 返回一个新的ID对象
  • getOfIdentity(AggregateIdInterface $id)) 返回与给定ID对应的对象
  • save(AggregateRootInterface $entity) 持久化实体
  • remove(AggregateRootInterface $entity) 删除实体
  • findAll() 返回实体的整个集合

DefaultDomainEvent

这是一个抽象类,所有领域事件都应该实现它。在构造函数中可以传递一个关联数组来初始化事件的属性。

领域事件必须定义一个常量 EVENT_NAME,该名称将与相应的监听器相关联。

DefaultCommand

这是一个抽象类,所有命令都应该实现它。在构造函数中可以传递一个关联数组来初始化命令的属性。

命令必须定义一个常量 COMMAND_NAME,该名称将与相应的处理器相关联。

定义了一个静态函数 mapProperties($command, $entity),它从实体初始化命令。