我想向ViewHelper添加多个函数。通常有一个名为类的函数,就像文件名一样。
如何在一个ViewHelper中添加多个功能?
E.g。像这样:
class Zend_View_Helper_MyMenuHelper extends Zend_View_Helper_Abstract
{
public function Horizontal($parameter)
{
return "...";
}
}
echo $this->MyMenuHelper()->Horizontal($parameter);
答案 0 :(得分: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();
答案 1 :(得分: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
答案 2 :(得分:0)
尝试使用小写字母
启动函数名称 class Zend_View_Helper_MyMenuHelper extends Zend_View_Helper_Abstract
{
public function horizontal($parameter)
{
return "...";
}
}
在视图中:
echo $this->myMenuHelper()->horizontal($parameter);