Как сделать собственный декодер JSON для класса Symfony Entity?

У меня есть класс Category Entity, который ссылается на родительский объект. Нравится:

id
parent
title
description
...

У меня есть класс Normalizer, который кодирует объект в JSON следующим образом:

{
    "id": 10,
    "parent": 1,
    "title": "Sports",
    "description": "Sports news." 
}

Теперь я хочу сгенерировать класс Entity, когда я выполняю запрос POST в форме, подобной нормализатору.

Могу ли я сгенерировать класс сущности из такого формата и как? Я хочу сделать запрос POST в формате JSON для создания Entity в службе REST.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
69
1

Ответы 1

Советую использовать форму Symfony. Во многом он лучше денормализатора IHMO

$data = json_decode($request->getContent());
$entity = new Entity();
$form = $this->createForm(EntityType::class, $entity, [
    'method' => Request::METHOD_POST
]);
$form = $form->submit($data);

if (!$form->isValid()) {
    return new JsonResponse('Some error in the form', 400);
}

$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();

return $this->json($entity, Response::HTTP_OK);

Итак, если я использую этот подход, получит ли мой класс Entity полезную ссылку на родительский элемент из моего предыдущего примера? Получу ли я сгенерированный объект, который я могу, например, сохранить? Родитель - это только идентификатор родительской сущности.

cvetan 25.10.2018 14:34

Другие вопросы по теме