Задать вопрос

Как десерилизовать массив, который приходит из формы Symfony 4?

Есть класс формы, отправляю аяксом и массив данных выглядят следующим образом
name_form[fields]: value
Хочу это все десериализовать в объект
if ($request->isXmlHttpRequest()) {
            $objectNormalizer = new ObjectNormalizer();
            $normalizers = [$objectNormalizer];
            $encoders = [new JsonEncoder()];
            $serializer = new Serializer($normalizers, $encoders);
            $data = $request->getContent();
            $result = $serializer->deserialize($data, SiteCreateDto::class, 'json');
            var_dump($result); exit;
        }


Но объект естественно не заполняется.
Как решить? Или что прочитать?

P.S. Также необходимо проигнорировать некоторые поля из формы
  • Вопрос задан
  • 193 просмотра
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
BoShurik
@BoShurik Куратор тега Symfony
Symfony developer
Не понял, а почему так странно создаете сериалайзер?
Во-первых,ObjectNormalizer имеет несколько больше зависимостей для полноценной его работы
Во-вторых, правильней все-таки его получать через DI.
public function submitAction(SerializerInterface $serializer, Request $request)
{
    if ($request->isXmlHttpRequest()) {
        $data = $request->getContent();
        $result = $serializer->deserialize($data, SiteCreateDto::class, 'json');
        var_dump($result); exit;
    }
}


Если из коробки ObjectNormalizer не помог, то надо будет написать свой: https://symfony.com/doc/current/serializer/custom_...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы