1

我想向 ViewHelper 添加多个功能。通常有一个函数命名为类和文件名。

如何将多个功能添加到一个 ViewHelper 中?

比如像这样:

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

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

4

3 回答 3

3

亚历克斯走在正确的道路上,但在他的回答中遗漏了一些东西:实际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();
于 2012-01-25T11:58:26.363 回答
3

有时您不想通过视图助手的 main 方法,尽管它对于某些逻辑来说还不错。在这种情况下,使用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
于 2012-01-28T14:49:21.533 回答
0

尝试以小写字母开头的函数名

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

在视图中:

        echo $this->myMenuHelper()->horizontal($parameter);
于 2011-12-08T19:52:27.003 回答