В config / rout.php:
Router::parseExtensions('json');
В app_controller.php:
var $components = array('RequestHandler');
var $helpers = array('Js');
function render($action = null, $layout = null, $file = null) {
switch($this->RequestHandler->ext) {
case 'json':
Configure::write('debug', 0);
return parent::render(null, 'default', '/json');
default:
return parent::render($action, $layout, $file);
}
}
В просмотрах / json.ctp:
<?php echo $this->Js->object(isset($data) ? $data : array()); ?>
В view / layout / json / default.ctp:
<?php
header('Cache-Control: no-store, no-cache, max-age=0, must-revalidate');
header('Content-Type: application/json');
echo $content_for_layout;
?>
В действии контроллера вы хотите вывести json:
$this->set('data', array('foo' => 'bar'));
Теперь каждый вызов действия с расширением .json (www.example.com/posts/view/12.json) будет выводить объект json без необходимости вызова функции рендеринга в каждом действии.