2014-01-17 56 views
0

如何創建一個站點範圍的函數來獲取基於id的角色或區域。 也可以根據(實際/目標)的計算結果在視圖中返回特定顏色。 我想在視圖和操作中使用它。適用於Zend的Site Wide Class,可用於動作,控制器和視圖?

我都試過了,創建一個類,並在圖書館設置它:

class Colouring 
{ 
    /* 
    * Array of the class for specifically the GEP portal theme 
    */ 
    private $colours_class = array(0 => 'color-grey', 
           1 => 'color-grey', 
           2 => 'color-orange', 
           3 => 'color-blue', 
           4 => 'color-green' 
          ); 

    /* 
    * Returns colour based on actual and target 
    */ 
    private static function getColour($actual, $target) 
    { 
     ...return someValue 

     } 
} 

路徑:Zend_Site/library/

我得到的錯誤:

Fatal error: Class 'Colouring' not found in 

於是我想也許View_Helper是我需要的:

所以我改道路:My/View/Helper/Colouring.php 和Class到:My_View_Helper_Colouring 將此添加到config.ini文件:resources.view.helperPath.My_View_Helper_ = "My/View/Helper/"

我用:

$viewHelperObj = $this->view->getHelper('Colouring'); 
$viewHelperObj->getColour($this->value, $this->divisor); 

給出:Fatal error: Call to a member function getHelper() on a non-object

我也試過:

$this->getColour($this->value, $this->divisor); 

這給:

Plugin by name 'GetColour' was not found in the registry 

因此,並沒有真正瞭解正確的做法是爲網站範圍內的事物添加靜態方法,甚至不需要站點範圍內的類和註冊方式。我會使用插件,視圖助手,動作助手還是隻能上課。

我使用Zend 1

回答

1

首先你必須重命名方法:getColour()to Colouring()並予以公佈。 然後嘗試從視圖中這樣稱呼它:

echo $this->Colouring('biz', 'bazz'); 
+0

我需要添加'$視圖 - > addHelperPath;'(APPLICATION_PATH '/ .. /庫/我/瀏覽/助手', 'My_View_Helper'。)在'bootstrap.php'中。但它現在提供'警告:CALL_USER_FUNC_ARRAY()預測參數1是一個有效的回調,不能訪問私有方法MY_VIEW_HELPER_COLOURING :: COLORING()' – surfer190

+1

對不起,錯誤是因爲我沒有改變方法公開 – surfer190

相關問題