你能告诉我如何将控制器用于主页,因为我试图将模型的数据放在home.ctp(主页视图)中
<?php $this->user->find() ?>
但它返回
注意(8):未定义的属性: 查看:: $ user [APP \ views \ pages \ home.ctp, 第1行]
答案 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来覆盖此控制器。然后,您可以根据需要修改该控制器,即使用模型,注入要在主页中使用的变量等