Я получаю полезную нагрузку, которая выглядит следующим образом:
{
"date": "2019-03-14 14:48:26 +0000",
"events": [
"E09FDE82-4CAA-4641-87AF-6C092D6E71C1",
"AE12A6BC-DA37-4C37-BF49-DD0CE096AE00"
],
"location": null
}
Объект-оболочка - это объект Animal, а события - это массив UUID, которые принадлежат объектам Event. Они могут или не могут существовать в таблице событий.
Я хочу иметь возможность сериализовать это в сущность Animal, используя сериализатор Symfony, например:
$serializer = $this->get("serializer");
if($request->getMethod() == Request::METHOD_POST) {
$data = $request->getContent();
$entity = $serializer->deserialize($data, $this->type, 'json');
...
...
Что я хотел быво время десериализации мне нужно искать этот конкретный ключ и перебирать его, создавая новые события (или получая существующие) и вызывая установщик на животных с этими.
Я посмотрел на symfonyнормализаторы, но я не думаю, что это правильные вещи? Я сделал это, но не уверен, куда идти отсюда:
<?php
namespace App\Normalizer;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use App\Entity\Event;
class EventNormalizer implements NormalizerInterface {
private $normalizer;
public function __construct(ObjectNormalizer $normalizer){
$this->normalizer = $normalizer;
}
public function normalize($event, $format = null, array $context = [])
{
$data = $this->normalizer->normalize($event, $format, $context);
return $data;
}
public function supportsNormalization($data, $format = null, array $context = [])
{
return $data instanceof Event;
}
}
Согласно документации, это то, как вы могли бы редактировать существующие значения или добавлять новые, но я понятия не имею, как я скажу нормализатору, что«эй, когда ты видишь этот ключ, ты встал, делай свое дело».
Любая помощь приветствуется.