API REST php7 symfony 3.4 - привязка данных json к формам

Я нашел это: «Как обрабатывать вложенный json с помощью форм FOSRestBundle и Symfony», но принятый ответ был: "создание несопоставленной формы и привязка данных вручную с помощью события формы"

В играть вы можете написать ваш собственный связыватель данных, но для большинства форматов (xml, json, ...) вы можете автоматически получать данные на основе HTTP-заголовка Content-Type (@BodyParser.Of(BodyParser.Json.class) не является обязательным здесь, чтобы заставить его работать), есть некоторые хорошо знать доступные связыватели данных (из Spring или где-то еще). У товара может быть список предметов, и даже так, вы можете автоматически привязать тело запроса к форме.

PHP / Symfony еще не узнали, как решить эту проблему? Если я создаю API REST в php + symfonmy, мне нужно написать какой-то «парсер» вроде это? Может ли кто-нибудь поделиться ссылкой на сообщение или примером с решением этой проблемы?

PD: Я использую игровой пример, потому что я не опытный веб-разработчик (меньше в PHP), так что воспринимайте это как мой mcve.

Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
396
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

По моему опыту, этого можно добиться двумя способами:

  1. Десериализация JSON в объект
  2. Обработка запроса с помощью формы, как вы предлагаете

В своих проектах я всегда использую второй метод, потому что очень легко обновлять сущности из сущности, загруженной в базу данных, и обрабатывать проверку ваших данных.

Я даю вам ссылку, которая есть в старой версии, но остается более или менее той же кнп университет

Я надеюсь это тебе поможет

Я пробовал это, но не работает, когда у меня вложенный json :(.

Alvaro Denis Acosta 23.03.2018 17:12

Я полагаю, что это были связанные сущности, вы можете добиться этого с помощью типа коллекции, я могу сделать с такими формами, symfony.com/doc/current/reference/forms/types/collection.htm‌ l

Jose M. González 23.03.2018 17:19
Ответ принят как подходящий

Чтобы решить эту проблему, убедитесь, что все поля в форме, которые имеют отношение, определены явно:

$builder->add('field_simple')
        ->add('field_entity')
...

Приведенный выше код не будет работать, потому что поле field_entity будет восприниматься как другое простое поле, вам нужно будет определить все поля сущностей или, по крайней мере, интересующие поля, например:

$builder->add('field_simple')
        ->add('field_entity', EntityType::class, array(
            'class' => CustomEntity::class,
            ...
        ))
...

Наилучшие пожелания...

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