I am following this tutorial http://book.cakephp.org/2.0/en/development/rest.html to get up and running with REST in my CakePHP application.
I have added the following to my routes.php file:
Router::mapResources(array('fantasyPicks', 'fantasyPlayers'));
Router::parseExtensions();
In each of my controllers, I have included the RequestHandler component and also setContent to json in the beforeFilter() callback. It looks something like this:
class FantasyPicksController extends AppController {
public $components = array('RequestHandler');
public function beforeFilter() {
parent::beforeFilter();
$this->RequestHandler->setContent('json','text/x-json');
$this->layout = 'json/default';
}
public function index() {
$fantasyPicks = $this->FantasyPick->find('all');
$this->set('json', $fantasyPicks);
$this->render('/json/data');
}
...
My json/data view simply echos json_encode:
<?php echo json_encode($json); ?>
After all of this, navigating to /fantasyPicks/view/1 works as expected. However, /fantasyPicks/1 is giving me the following error:
Missing Method in FantasyPicksController
Error: The action 1 is not defined in controller FantasyPicksController
Error: Create FantasyPicksController::1() in file: app\Controller\FantasyPicksController.php.
<?php
class FantasyPicksController extends AppController {
public function 1() {
}
}
Does anyone know what I am doing incorrectly? Any help is appreciated!
You have to use proper controller naming conventions when accessing the page.
http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html
Refer to the URL considerations section. So you should be going to /fantasy_picks/1 and it will work properly.