2012-04-12 25 views
0

我搜索了很多,但是我找不到如何在視圖中使用find('all')用於Rails,但在這裏我得到錯誤「未定義的屬性:視圖:: $菜單[APP \ Lib \ Cake \ View \ View.php,第804行]」 「菜單」是我用來從菜單表中獲取數據的模型。如何在視圖中使用find('all') - CakePHP

我用在欣賞下面的代碼:

$this->set('test',$this->Menu->find('all')); 
print_r($test); 
+0

檢索視圖內的日期違反了MVC規則。請不要這樣做。 – thecodeparadox 2012-04-12 06:48:09

+0

我知道,但要解決我的問題,我只知道這種方式,如果有任何其他方式幫助。 我必須顯示一個表中的所有菜單,我有另一個表中的menu_id,我需要將id轉換爲菜單名稱。 – 2012-04-12 06:56:36

+0

我認爲我的文章將解決您的問題 – thecodeparadox 2012-04-12 06:58:01

回答

0

在AppHelper,

撥打以下功能

function getMenu() 
{ 

    App::import('Model', 'Menu'); 
    $this->Menu= &new Menu(); 
$test = array(); 
$test = $this->Menu->find('all'); 
return $test; 
} 

使用上述功能鑑於這樣的:

<?php 

$menu = $html->getMenu(); 
print_r($menu); 

?> 
+0

我再次收到錯誤: 致命錯誤:調用AppHelper.php中的非對象的成員函數find()。 我AppHelper.php增加了$這個 - > loadmodel(「菜單」),但我發現了錯誤loadmodel是非對象。 – 2012-04-12 06:47:51

+0

請檢查我的更新回答 – chetanspeed511987 2012-04-12 07:29:47

+0

我投了一個,因爲你給不好的建議,並建議違反MVC。 – burzum 2012-04-12 10:01:16

3

嘗試在視圖文件中不檢索數據。 MVC規則

違反嘗試有鑑於此文件:

$menu = ClassRegistry::init('Menu'); 
pr($menu->find('all')); 
+0

使用此代碼視圖(ctp)文件不在控制器 – thecodeparadox 2012-04-12 07:02:39

+0

沒有違反MVC規則,如何做到這一點functionallity? – chetanspeed511987 2012-04-12 08:39:21

+0

在控制器中查詢,然後設置查看。或者在AppController的beforeFilter函數中進行查詢,將結果存儲在一個變量中,然後使用該變量。 – thecodeparadox 2012-04-12 10:56:07

6

內,您的菜單模式創建一個方法,像使用getMenu()。用這種方法做你的find()並得到你想要的結果。根據需要修改結果並喜歡在getMenu()方法中返回數據。

如果您需要在AppController中:: beforeFilter()或beforeRender()的每個頁面上的菜單根本就

$this->set('menu', ClassRegistry::init('Menu')->getMenu()); 

如果你不需要它無處不在,你可能會去使用requestAction使用獲取數據好這個方法來自Menus控制器,它將從模型中調用getMenu()並返回數據。把它設置在你需要的地方會更好,如果你使用requestAction,你也想緩存它。

+0

非常感謝@burzum,你的工作! – 2012-04-12 11:17:20

+0

如果它適合您,請您介意將答案標記爲正確嗎? – burzum 2012-04-12 13:35:21

+1

@burzum:我投了那個,因爲你給了正確的建議,並建議我 – chetanspeed511987 2012-04-13 03:25:31

0

Cakephp不允許這樣做。

首先使用ClassRegistry :: init('Model')創建模型的引用(對象); 然後從使用對象調用查找函數

$obj = ClassRegistry::init('Menu'); $ test = $ obj-> find('all'); echo「」;的print_r($測試); `

這將工作。

相關問題