为主页制作控制器

时间:2010-01-17 20:38:56

标签: php cakephp

你能告诉我如何将控制器用于主页,因为我试图将模型的数据放在home.ctp(主页视图)中 <?php $this->user->find() ?>但它返回

  

注意(8):未定义的属性:   查看:: $ user [APP \ views \ pages \ home.ctp,   第1行]

3 个答案:

答案 0 :(得分:0)

如果这是您想要的方向,那么您真正需要做的就是创建一个新的控制器。如果这是您需要数据访问的唯一语句,则仅使用PagesController的此方法伪装它可能是值得的。例如,我的一个项目的主页是99%静态保存为特色事件列表。我没有将所有内容移到新控制器上,甚至不是为Event(不需要)加载PagesController模型,而是在PagesController::home()中应用此解决方案:

$attractions = ClassRegistry::init ( 'Attraction' )->featured ( 10 );

效果很好。但是,如果您的页面比我的页面更具动态性,则可能值得通过不同的控制器(与显示的数据更密切相关的控制器)路由您的主页。

答案 1 :(得分:0)

你应该查看食谱;它有一些可靠的CakePHP教程,位于http://book.cakephp.org/

您还没有真正提供大量信息,但我的猜测是您的控制器uses模型“用户”,并且您将$this->user->find()放在视图中,它应该在您的视图中控制器。在你的控制器动作中,你需要/需要做这样的事情......

Users_Controller extends AppController {
    function index() {
        $arrayOfUsers = $this->User->find(...);
        $this->set('users', $arrayOfUsers);
    }
}

然后,您可以 - 在您的视图中 - 访问“用户”,如下所示:

pre($users);

...因为您使用了控制器方法set()将变量$users发送到视图。

答案 2 :(得分:0)

主页的默认控制器即home.ctp视图位于/cake/libs/controller/pages_controller.php中。可以通过将副本放在应用程序的controllers目录中作为/app/controllers/pages_controller.php来覆盖此控制器。然后,您可以根据需要修改该控制器,即使用模型,注入要在主页中使用的变量等