/** * Renders file and returns json-encoded response * * @param null $view * @param null $layout * @return string */ public function render($view = null, $layout = null) { parent::render($view, $layout); $options = 0; if (version_compare(PHP_VERSION, '5.4.0', '>=') && Configure::read('debug')) { $options = JSON_PRETTY_PRINT; } return json_encode($this->dtResponse, $options); }
/** * testRenderWithView method * * @return void */ public function testRenderWithView() { App::build(array('View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS))); $Request = new CakeRequest(); $Response = new CakeResponse(); $Controller = new Controller($Request, $Response); $Controller->name = $Controller->viewPath = 'Posts'; $data = array('User' => array('username' => 'fake'), 'Item' => array(array('name' => 'item1'), array('name' => 'item2'))); $Controller->set('user', $data); $View = new JsonView($Controller); $output = $View->render('index'); $expected = json_encode(array('user' => 'fake', 'list' => array('item1', 'item2'))); $this->assertIdentical($expected, $output); $this->assertIdentical('application/json', $Response->type()); }
<?php // inclue the various view classes include 'views.php'; include 'actions.php'; // work out what format they want $accept = explode(',', $_SERVER['HTTP_ACCEPT']); if ($accept[0] == 'text/html') { $view = new HtmlView(); } elseif ($accept[0] == 'text/xml') { $view = new XmlView(); } else { $view = new JsonView(); } // route the request (filter input!) $action = $_GET['action']; $library = new Actions(); // OBVIOUSLY you would filter input at this point $data = $library->{$action}($_GET); // output appropriately $view->render($data);
<?php require_once './ViewEngine.php'; require_once './JsonView.php'; require_once './HtmlView.php'; $json_view = new JsonView(); $json_view->render(); $html_view = new HtmlView(); $html_view->render();
/** * testRenderWithView method * * @return void */ public function testRenderWithView() { App::build(array('View' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS))); $Request = new CakeRequest(null, false); $Request->params['named'] = array('page' => 2); $Response = new CakeResponse(); $Controller = new Controller($Request, $Response); $Controller->name = $Controller->viewPath = 'Posts'; $data = array('User' => array('username' => 'fake'), 'Item' => array(array('name' => 'item1'), array('name' => 'item2'))); $Controller->set('user', $data); $View = new JsonView($Controller); $View->helpers = array('Paginator'); $output = $View->render('index'); $expected = array('user' => 'fake', 'list' => array('item1', 'item2'), 'paging' => array('page' => 2)); $this->assertSame(json_encode($expected), $output); $this->assertSame('application/json', $Response->type()); $View->request->query = array('jsonCallback' => 'jfunc'); $Controller->set('_jsonp', 'jsonCallback'); $View = new JsonView($Controller); $View->helpers = array('Paginator'); $output = $View->render('index'); $expected['paging']['?']['jsonCallback'] = 'jfunc'; $expected = 'jfunc(' . json_encode($expected) . ')'; $this->assertSame($expected, $output); $this->assertSame('application/javascript', $Response->type()); }
/** * JsonViewTest::testRenderJSONBoolFalse() * * @return void */ public function testRenderJSONBoolFalse() { $Request = new CakeRequest(); $Response = new CakeResponse(); $Controller = new Controller($Request, $Response); // encoding a false, ensure this doesn't trigger exception $data = false; $Controller->set($data); $Controller->set('_serialize', 'data'); $View = new JsonView($Controller); $output = $View->render(); $this->assertSame('null', $output); }
/** * Renders file and returns json-encoded response * * @param null $view * @param null $layout * @return string */ public function render($view = null, $layout = null) { parent::render($view, $layout); return json_encode($this->dtResponse); }