2013-07-20 36 views
1

我正在做整個孩子的生成鏈接。因爲View不允許使用Model。這就是爲什麼我必須讓自己的助手生成。然後我用$this->Model->children($current_id, false, 'category');但問題我有錯誤這樣如何在CakePHP 2.0中將子項()導入Helper?

Fatal error: Call to a member function children() on a non-object in /user/app/View/Helper/my_helper.php on line 193

我的代碼:

<?php 
class MyHelperHelper extends AppHelper { 
    var $helpers = array('Html','Paginator','Tree'); 

    function makechildrenlink($current_id, $category_id, $item_id) { 
     $this->Category->children($current_id, false, 'category'); 




    } 
} 

?> 
+0

你爲什麼使用視圖層從模型中獲取數據?讓控制器/組件執行該操作並將其傳遞給幫助器。另外,'my_helper.php'不是蛋糕2中文件名的樣子2.x – mark

+0

my_helper.php是我自己做的工具。因爲從那個my_helper.php中有很多項使用函數,但是Helper不能使用children()來創建Parent的所有子項列表。 – user453089

+1

Geeze - '$ this-> Category'。如果你從未宣佈這應該是這個幫手的內容,這怎麼可能起作用呢? PHP並不神奇。 CakePHP在某種程度上是這樣,但也不是那麼重要。 – mark

回答

0

在控制器/組件的範圍,你需要獲取數據:

$this->loadModel('Category'); 
$categories = $this->Category->children($current_id, false, 'category'); 
$this->set(compact('categories')); // pass it down to the view 

在你現在可以用$類別做任何你想要的視圖

echo $this->MyHelper->makeChildrenLink($categories); 
例如,

而且,如評論中所述,您的幫手需要爲View/Helper/MyHelper.php

+0

但每個項目都需要使用功能。所有這些都是不同的類別。 – user453089

+1

你可以迭代項目 - foreach是你的朋友。 – mark

+0

yap ...看起來像沒有選擇使用手動代碼。 – user453089