From ccd530eeaaba8c314c5b5904f644e0e31cb34ca7 Mon Sep 17 00:00:00 2001 From: Rinsvent Date: Wed, 18 Aug 2021 23:10:12 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=BA=D0=B8=D0=BD=D1=83?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D0=B3=D0=B8=20=D0=B2=20=D0=B2=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B4=D0=B0=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/EventListener/RequestListener.php | 29 +++++++++++++++------------ 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/EventListener/RequestListener.php b/src/EventListener/RequestListener.php index 0b379e9..d9b2727 100644 --- a/src/EventListener/RequestListener.php +++ b/src/EventListener/RequestListener.php @@ -31,17 +31,26 @@ class RequestListener } $methodExtractor = new MethodExtractor($controller[0], $controller[1]); + $tags = [ + 'default', + 'request', + 'request_body', + 'request_headers', + 'request_server', + 'route_' . $request->get('_route') + ]; + /** @var RequestDTO $requestDTO */ while ($requestDTO = $methodExtractor->fetch(RequestDTO::class)) { $requestDTOInstance = $this->grabRequestDTO( $requestDTO, - $request->get('_route'), + $tags, $request->getContent(), $request->query->all(), $request->request->all() ); - $errorCollection = $this->validate($requestDTOInstance); + $errorCollection = $this->validate($requestDTOInstance, $tags); if ($errorCollection->hasErrors()) { $event->setResponse(new JsonResponse(['errors' => $errorCollection->format()], Response::HTTP_BAD_REQUEST)); } else { @@ -61,14 +70,15 @@ class RequestListener } } - protected function validate(object $data): ErrorCollection + protected function validate(object $data, array $tags): ErrorCollection { + $tags = array_merge($tags, ['Default']); $validator = Validation::createValidatorBuilder() ->enableAnnotationMapping(true) ->addDefaultDoctrineAnnotationReader() ->getValidator(); - $violations = $validator->validate($data); + $violations = $validator->validate($data, null, $tags); $errorCollection = new ErrorCollection(); if ($violations->count()) { @@ -81,7 +91,7 @@ class RequestListener protected function grabRequestDTO( RequestDTO $requestDTO, - string $routeName, + array $tags, string $content, array $queryParameters = [], array $parameters = [] @@ -101,14 +111,7 @@ class RequestListener $result = $data2dtoConverter->convert( $data, new $requestDTO->className, - [ - 'default', - 'request', - 'request_body', - 'request_headers', - 'request_server', - 'route_' . $routeName - ] + $tags ); return $result;