2010-01-17 26 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,可以覆蓋此控制器。然後,你可以修改該控制器認爲合適的,即使用模型,注入要在主頁中使用的變量等。