簡體   English   中英

Zend ViewHelper子函數

[英]Zend ViewHelper Sub Functions

我想向ViewHelper添加多個功能。 通常,有一個函數的名稱類似於類和文件名。

如何將多個功能添加到一個ViewHelper中?

例如:

class Zend_View_Helper_MyMenuHelper extends Zend_View_Helper_Abstract
{
    public function Horizontal($parameter)
    {
         return "...";
    }
}

echo $this->MyMenuHelper()->Horizontal($parameter);

亞歷克斯走在正確的道路上,但他的答案中漏了點東西:實際的myMenuHelper()方法必須返回視圖助手本身,此方法才能起作用:

class Zend_View_Helper_MyMenuHelper extends Zend_View_Helper_Abstract
{
    public function myMenuHelper()
    {
        return $this;
    }

    public function horizontal() { ... }

    // more methods...
}

然后,如上所述:

echo $this->myMenuHelper()->horizontal();

有時,您不想通過視圖助手的主要方法,盡管對於某些邏輯來說並沒有那么糟糕。 在這種情況下,請使用getHelper()

class Zend_View_Helper_MyMenuHelper extends Zend_View_Helper_Abstract
{
    public function myMenuHelper()
    {
        // some logic, maybe the main one
    }

    public function horizontal() 
    {    
        // some other logic
    }
}

以下示例完全繞過myMenuHelper()

// in controller
$this->view->getHelper('MyMenuHelper')->horizontal();

// in view
$this->getHelper('MyMenuHelper')->horizontal();`

例如,在某些情況下,我在控制器中用一些內部數據填充了視圖幫助 ,直接在視圖中調用主方法,該方法對數據起作用。

// in controller
$this->view->getHelper('MyMenuHelper')->storeData($someArray);

// in view
$this->myMenuHelper(); // iterates over $someArray

嘗試以小寫字母開頭的函數名稱

        class Zend_View_Helper_MyMenuHelper extends Zend_View_Helper_Abstract
        {
                public function horizontal($parameter)
                {
                       return "...";
                }
        }

在視圖中:

        echo $this->myMenuHelper()->horizontal($parameter);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM