diff --git a/src/Actions/InterfaceAction.php b/src/Actions/InterfaceAction.php new file mode 100644 index 0000000000000000000000000000000000000000..f4dcce08c19c42c79cb48e9031c5241114ee829d --- /dev/null +++ b/src/Actions/InterfaceAction.php @@ -0,0 +1,14 @@ +<?php + +namespace App\Actions; + +use App\Entity\InterfaceDataEntity; + +interface InterfaceAction +{ + /** + * абÑÑ‚Ñ€Ð°ÐºÑ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ÑпольнÑет опиÑаный функционал в контроллере + * @param array $array маÑÑив тела реквеÑта + */ + public function act(InterfaceDataEntity $model): mixed; +} diff --git a/src/Entity/InterfaceDataEntity.php b/src/Entity/InterfaceDataEntity.php new file mode 100644 index 0000000000000000000000000000000000000000..9580e66d56ce174d0f4eadc1b849e4de49ee79a9 --- /dev/null +++ b/src/Entity/InterfaceDataEntity.php @@ -0,0 +1,15 @@ +<?php + +namespace App\Entity; + +use Symfony\Component\HttpFoundation\Request; + +interface InterfaceDataEntity +{ + /** + * преобразование реквеÑта в модель + * @param Request $request + * @return void + */ + public function serialise(Request $request): void; +} diff --git a/src/Service/ValidationService.php b/src/Service/ValidationService.php new file mode 100644 index 0000000000000000000000000000000000000000..cd9df8c84a27dc264c8bd2bce403b75e2a222ffe --- /dev/null +++ b/src/Service/ValidationService.php @@ -0,0 +1,41 @@ +<?php + +namespace App\Service; + +use App\Entity\InterfaceDataEntity; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\Validator\Validation; + +class ValidationService +{ + /** + * Валидирование Ñодержимого модели ÑоглаÑно атрибутам парамтров + * @param InterfaceDataEntity $model + * @return void + */ + public function validate(InterfaceDataEntity $model): void + { + $validator = Validation::createValidator(); + $errors = $validator->validate($model); + + $messages = [ + 'message' => 'validation_fail', + 'errors' => [], + ]; + + foreach ($errors as $error) { + $messages['errors'][] = [ + 'property' => $error->getPropertyPath(), + 'value' => $error->getInvalidValue(), + 'message' => $error->getMessage(), + ]; + } + + if (count($messages['errors']) > 0) { + $response = new JsonResponse($messages, 400); + $response->send(); + + exit; + } + } +} \ No newline at end of file