Как должен выглядеть JSON для контроллера CakePHP?

Я создаю веб-приложение, которое хранит поездки пользователей, и я создаю это приложение в CakePHP 2.2.5.

У меня есть модель Поездки, и эта модель путешествий имеет много координатных объектов, которые хранят координаты широты.

Я хотел бы отправить вызов API в метод add путешествия, содержащий json в теле, чтобы создать новый объект.

Я попытался выяснить, как отформатировать JSON, чтобы позволить контроллеру использовать его, но, похоже, не могу это выяснить. Я также хотел бы знать, как добавить дочерние объекты в JSON.

Я тестирую метод с помощью этой команды cURL

curl -i -H "ACCEPT: application/json" -X POST --data @/home/sam/data.json http://localhost/journeys/add.json

Выполнение этой команды CURL создает пустую запись в базе данных.

Файл JSON, включенный в CURL, содержит

{"description" : "Hello World", "user_id":3}

2 ответа

Решение

Я провел еще несколько исследований и нашел решение моей проблемы:

CakePHP сохранит данные JSON и также сохранит информацию о вложенной модели.

$data = $this->request->input('json_decode');

Что похоже на то, что сказал @Arash, но также сохранит информацию о вложенной модели, вызвав

$this->Journey->saveAssociated($data)

JSON, который я предоставляю контроллеру, выглядит так:

{"Journey":
{"description":"Not even an article from the map", "user_id":3}, 
"Coordinate":[
    {"lat":54.229149, "lng":-5.114115},
    {"lat":54.39153, "lng":-5.114113}
 ]
}

Где координата принадлежит Путешествию.

Лучше конвертировать JSON в массив (с json_decode функция) затем манипулировать вашим массивом, если вы хотите, наконец, преобразовать его в JSON (json_encode функция).

cakePHP справится с этой задачей: JsHelper:: object

edit 1: но я думаю, что когда php сделает это за вас, лучше использовать чистую функцию php вместо функций cakePHP.

редактировать 2: я думаю, что akePHP не обрабатывает это, вы должны обрабатывать это самостоятельно, конвертировать свой JSON в массив, изменить свой массив, как вы хотите в foreach затем передайте его функции saveAll для вставки или обновления в базе данных.

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