Подфункции Zend ViewHelper - PullRequest
       29

Подфункции Zend ViewHelper

1 голос
/ 08 декабря 2011

Я хочу добавить более одной функции в ViewHelper. Обычно есть одна функция, названная как класс и как имя файла.

Как добавить несколько функций в один ViewHelper?

например. как это:

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

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

Ответы [ 3 ]

3 голосов
/ 25 января 2012

Алекс был на правильном пути, но что-то упустил в своем ответе: фактический метод 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();
3 голосов
/ 28 января 2012

Иногда вы не хотите проходить через основной метод помощника вида, хотя это не так уж плохо для некоторых видов логики.В этом случае используйте 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();`

В некоторых случаях, например, я заполняю помощник вида некоторым внутреннимdata в контроллере , вызывающий его основной метод непосредственно в представлении , которое воздействует на эти данные.

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

// in view
$this->myMenuHelper(); // iterates over $someArray
0 голосов
/ 08 декабря 2011

попробуйте запустить имя функции со строчной буквы

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

в представлении:

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