Вот что я делал в прошлом:
В config/routes.php
, добавьте следующее:
Router::mapResources(array('restaurants', 'items'));
Router::parseExtensions('json');
В app/app_controller.php
:
function beforeFilter() {
if ($this->isApiCall()) {
Configure::write('debug', 0);
}
}
function isApiCall() {
return $this->RequestHandler->isAjax()
|| $this->RequestHandler->isXml()
|| $this->RequestHandler->prefers('json');
}
Затем в app/views/items
и app/views/restaurants
у меня есть папка json
под каждой с соответствующим файлом представления для каждого действия в контроллере.Запросы выполняются с расширением .json
.
Наконец, у меня есть файл макета в app/views/layouts/json/default.ctp
со следующим:
<?php echo $content_for_layout; ?>
Например, http://mydomain.com/items/view.json
картына app/views/items/json/view.ctp
, который содержит:
<?php echo $javascript->object($item); ?>
$item
был заполнен в файле app/controllers/items_controller.php
.
Не уверен, поможет ли это добавить к путанице, но вот как яя использовал JSON в моих приложениях CakePHP.
ОБНОВЛЕНИЕ: Добавлена информация о макете.