Adding a Controller Function for the Home View in CakePHP
When you visit the CakePHP site, by default you are taken to the "home.ctp" page.
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
I want to add some elements there (like blog posts), so I thought I could just add this to the PagesController () class:
public function home() {
$this->set('blogposts', $this->Blogpost->find('all'));
}
But it doesn't work.
So: what is the correct way to add something like this on the home page (or any other page for that matter)
+3
source to share
3 answers
The preferred option is to create a custom route for the master page, but you can also override the PagesController display function
Option 1: (preferred method)
Router::connect('/', array('controller' => 'mycontroller', 'action' => 'myaction'));
Option 2
Router::connect('/', array('controller' => 'pages', 'action' => 'home'));
Option 3:
class PagesController {
function display()
{
// default controller code here
// your custom code here
}
}
The latter option uses requestAction in your view, but it is not recommended as it has a huge performance disadvantage.
Option 4: (not recommended)
$newsitems = $this->requestAction(array('controller' => 'newsitems', 'action' => 'getlatestnews', 'limit' => 10));
+11
source to share