Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CakePHP 2.1 JsonView

I'm using the new CakePHP 2.1 and would like to use the JsonView to make my controller respond to an AJAX request created by jQuery on the client side.

However, this should be done automatically with the JsonView according to the documentation.

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html

I added this line in my routes.php file

Router::parseExtensions('json');

And in my controller I have

$this->RequestHandler->setContent('json', 'application/json' ); 
$bookings = $this->Bookings->find('all');

$this->set('bookings', $bookings);  
$this->set('_serialize', 'bookings');

Then the view should be obsolete, but when I call this, it still serves a page which is pointing to a missing view.

like image 885
Chris De Rouck Avatar asked Mar 24 '12 13:03

Chris De Rouck


2 Answers

Does the url you are calling ends on '.json'?

like image 82
func0der Avatar answered Oct 18 '22 18:10

func0der


I had some issues with Cake wanting me to explicitly set the json view. The XML view loaded fine by default just not json.

I did the following in my API function:

    if($this->RequestHandler->ext == 'json') {
        $this->autoRender = false;
        echo json_encode($results);
    } else if($this->RequestHandler->ext == 'xml') {
        $this->set(array(
            'results' => $results,
            '_serialize' => array('results')
        ));
    }
like image 42
Gene Kelly Avatar answered Oct 18 '22 17:10

Gene Kelly