Skip to content
Snippets Groups Projects
Commit 9d38d459 authored by Александр Плохих's avatar Александр Плохих :waxing_gibbous_moon:
Browse files

create interfaces | create VlidationService

parent f205f644
No related branches found
No related tags found
1 merge request!1Ptps|controller 1
<?php
namespace App\Actions;
use App\Entity\InterfaceDataEntity;
interface InterfaceAction
{
/**
* абстрактная функция испольняет описаный функционал в контроллере
* @param array $array массив тела реквеста
*/
public function act(InterfaceDataEntity $model): mixed;
}
<?php
namespace App\Entity;
use Symfony\Component\HttpFoundation\Request;
interface InterfaceDataEntity
{
/**
* преобразование реквеста в модель
* @param Request $request
* @return void
*/
public function serialise(Request $request): void;
}
<?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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment