I've been trying to setup an Ajax Call in Cakephp 3.0.11. I've followed the explanation here : http://book.cakephp.org/3.0/en/views/json-and-xml-views.html
Json enabled in routing (but i'm not really sure that's usefull) :
$routes->extensions(['json', 'xml', 'html']);
I've setup my exemple in controller :
$returnObject = new ObjectReturn();
$this->set('returnObject', $returnObject);
$this->set('_serialize', ['returnObject']);
But when I make my ajax call, I've got :
{
"message": "Template file \Pages\\score.ctp\ is missing.",
"url": "\/pages\/score",
"code": 500
}
If I create the page, he juste render me some html, with default.ctp as a layout. What's wrong here ?
Thanks a lot !
If you'd like to force every response (except errors) to JSON (and skip templates) you can put this code in your AppController.php
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
}
public function beforeRender(Event $event)
{
$this->RequestHandler->renderAs($this, 'json');
$this->response->type('application/json');
$this->set('_serialize', true);
}
This loads the RequestHandlerComponent, forces the render to JSON, forces the response type to JSON, and skips using templates.
More in the manual here: http://book.cakephp.org/3.0/en/controllers/components/request-handling.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With