在CakePHP中为“home”视图添加控制器功能

时间:2012-03-18 11:08:51

标签: cakephp

访问默认的CakePHP网站时,会转到“home.ctp”页面。

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

我想在那里添加一些元素(比如博客帖子),所以我想我可以将它添加到PagesController()类中:

public function home() {
    $this->set('blogposts', $this->Blogpost->find('all'));
}

但这不起作用。

那么:在主页(或任何其他页面)上添加类似内容的正确方法是什么?

3 个答案:

答案 0 :(得分:11)

首选选项是为主页创建自定义路线,但您也可以覆盖PagesController的显示功能

选项1 :(首选方法)

Router::connect('/', array('controller' => 'mycontroller', 'action' => 'myaction'));

选项2

Router::connect('/', array('controller' => 'pages', 'action' => 'home'));

选项3:

class PagesController {
    function display()
    {
        // default controller code here
        // your custom code here
    }
}

最后一个选项是在您的视图中使用requestAction,但不推荐使用它,因为它具有巨大的性能缺陷

选项4 :(不推荐)

$newsitems = $this->requestAction(array('controller' => 'newsitems', 'action' => 'getlatestnews', 'limit' => 10));

答案 1 :(得分:1)

实际上,操作是displayhome是参数。因此,Controller Pages中的主要方法必须调用display,而不是home。之后,创建display.ctp视图。

参考:

答案 2 :(得分:0)

要真正回答原来的问题:

$this->loadModel('Blogpost');

理想情况下,该模型应该被称为

$this->loadModel('BlogPost');