2013-01-18 92 views
1

我已經創建了助手名稱TicketHelper(具有TicketsController),CommonHelper(無控制器)和ExcelHelper(無控制器)。在調用CommonHelper的任何功能時,TicketHelper內部工作正常。這裏例如TicketHelper:cakephp2如何調用方法另一個幫助當前幫手?

<?php 
    class TicketHelper extends AppHelper { 
    public $helpers = array('Session','Common'); 
    public function myFunction(){ 

     echo $this->Common->workfine(); 
    } 
?> 

通過同樣的動作我叫CommonHelper到ExcelHelper它產生錯誤:致命錯誤:調用一個成員函數workfine()一個非對象在

回答

0

你不應該使用控制器內的助手。視圖中使用助手用於邏輯。它包含在控制器中,但在視圖中可訪問。對於控制器之間共享的邏輯,使用組件代替http://book.cakephp.org/2.0/en/controllers/components.html#creating-a-component

如果你仍然想在控制器(不推薦)使用一個輔助:

$view = new View($this); 
$myHelper = $view->loadHelper('MyHelper'); 
+1

?當然,我不是在控制器中使用,我只是想創建一個幫手,並希望從其他幫助者調用另一個函數。 – Meas

2

後幾個小時檢查,我發現錯誤問題,構造

<?php 
    class TicketHelper extends AppHelper { 
    public $helpers = array('Session','Common'); 
    public function myFunction(){ 
    echo $this->Common->workfine(); 
    } 

    //Here my problem constructor Note: function name and class name are the same 
    function TicketHelper(){ 
      //My code here 
    } 

    /** 
    * It should be follow cakephp doc 
    * function __construct($id = false, $table = null, $ds = null) { 
    *  parent::__construct($id, $table, $ds); 
    *  
    * } 
    * 
    */ 

>