Как должен выглядеть 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 для вставки или обновления в базе данных.