youniverse-center/request-validation-bundle

Symfony Bundle 用于自动验证请求中提供的数据。

0.2.1 2021-06-20 14:17 UTC

This package is auto-updated.

Last update: 2024-09-20 21:07:02 UTC


README

  1. 添加实现 Yc\RequestValidationBundle\RequestValidator\RequestValidatorInterface 的验证器类
  • getConstraints 中返回验证组件使用的约束
  • getGroups 中返回验证组
  • getInvalidRequestResponse 必须返回如果验证失败将使用的响应。
  1. 将属性 Yc\RequestValidationBundle\Attributes\RequestValidator 添加到您的控制器中
#[Route('/some/route', name: 'some_route')]
#[RequestValidator(Create::class)]
class CreateController extends AbstractController
{
  public function __invoke($data)
  {
    // in the data is your validated request content
  }
}

(如果类中有多个控制器,此属性也可以放置在方法上。)

  1. 您可能希望以特定的方式接收请求中的数据以进行验证。为此,实现 Yc\RequestValidationBundle\DataReceiver\DataReceiverInterface

例如

public function getData(Request $request): mixed
{
    return json_decode($request->getContent(), true);
}
  1. 默认情况下,数据将设置在请求属性 data 中。如果您想更改此设置,实现 Yc\RequestValidationBundle\DataTransformer\DataTransformerInterface

例如

public function transformData(mixed $data): array
{
    $id = ProjectId::fromString($data['id']);

    return [
        'project' => new Project($id, $data['name'])
    ];
}

然后您可以在控制器中使用它,如下所示

public function __invoke(Project $project) {}