youniverse-center / request-validation-bundle
Symfony Bundle 用于自动验证请求中提供的数据。
0.2.1
2021-06-20 14:17 UTC
Requires
- php: ^8.0
- symfony/config: ^5.3
- symfony/dependency-injection: ^5.3
- symfony/event-dispatcher: ^5.3
- symfony/http-kernel: ^5.3
- symfony/validator: ^5.3
This package is auto-updated.
Last update: 2024-09-20 21:07:02 UTC
README
- 添加实现
Yc\RequestValidationBundle\RequestValidator\RequestValidatorInterface
的验证器类
- 在
getConstraints
中返回验证组件使用的约束 - 在
getGroups
中返回验证组 getInvalidRequestResponse
必须返回如果验证失败将使用的响应。
- 将属性
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 } }
(如果类中有多个控制器,此属性也可以放置在方法上。)
- 您可能希望以特定的方式接收请求中的数据以进行验证。为此,实现
Yc\RequestValidationBundle\DataReceiver\DataReceiverInterface
例如
public function getData(Request $request): mixed { return json_decode($request->getContent(), true); }
- 默认情况下,数据将设置在请求属性
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) {}