public function create(Request $request, Create\Handler $handler): Response
{
$command = new Create\Command(); //это DTO
$form = $this->createForm(Create\Form::class, $command); //так как это формы, то dto заполняется через неё
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { //валидация формы.
try {
$handler->handle($command); //Здесь скармливаем нашу DTO, нашему сервису, который превратит его в php объекты и запустит уже нужные функции, или дёрнет нужные сервиса, тоесть вся реализации создания пользователя спрятана здесь
return $this->redirectToRoute('users');
} catch (\DomainException $e) {
$this->errors->handle($e);
$this->addFlash('error', $e->getMessage());
}
}
return $this->render('app/users/create.html.twig', [
'form' => $form->createView(),
]);
}
$command = $this->serializer->deserialize($request->getContent(), Create\Command::class, 'json');
$dto = $this->serializer->deserialize($request->getContent(), DTO::class, 'json');
Хотите, чтобы всё работало как надо, тогда вам на Симфони.