2010-01-17 49 views
0

你能告诉我如何使用控制器的主页,因为我试图把一个模型的数据home.ctp(主页视图)与 <?php $this->user->find() ?>但它返回制作的主页控制器

通知(8):未定义的属性: 查看:: $用户[APP \意见\网页\ home.ctp, 线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发送到视图。

+1

这应该是UsersController(没有下划线),并且调试功能是pr()不是pre() – duckyflip 2010-01-18 13:49:36

+0

哈哈,你是我的坏人当我在没有Cake的PHP中工作时,我总是定义我自己调用的pr版本,因为我喜欢函数名至少有一个元音:) – 2010-01-18 15:21:50

0

您真正需要做的是创建一个新的控制器如果是这样的你想去的方向。如果这是您需要访问数据的唯一声明,则可能仅需使用PagesController的这种方法进行伪造。例如,我的其中一个项目的主页是99%静态存储的特色事件列表。而不是移动所有的东西到一个新的控制器,甚至装载我Event样板全PagesController(它是没有必要的),我只是在PagesController::home()应用本方案:

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

的伟大工程。如果你的页面比我的页面更具动态性,那么很有必要通过一个不同的控制器(与正在显示的数据更密切相关的页面)来路由你的主页。

0

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