Zend Form не может использовать action helper - PullRequest
1 голос
/ 26 ноября 2010

Мой помощник действия просто выдает "ок" при вызове

class Helper_MyActionHelper extends Zend_Controller_Action_Helper_Abstract {
   public function direct(){
      echo "ok";
   }
}

Когда я тестирую его в моем контроллере, он работает нормально, и эхо нормально.

$this->_helper->myActionHelper();

Но когда я делаю то же самое в форме, это совсем не работает. Я пытался

$this->_helper->myActionHelper();
$this->_helper->myActionHelper;

Так я могу использовать помощник действий в форме ... есть ли способ обойти это?

Ответы [ 4 ]

4 голосов
/ 26 ноября 2010

Вы можете использовать:

$helper = Zend_Controller_Action_HelperBroker::getStaticHelper('MyActionHelper');
echo $helper->direct();

Посмотрите на раздел Помощник брокера в документации: http://framework.zend.com/manual/en/zend.controller.actionhelpers.html

3 голосов
/ 26 ноября 2010

Более точное имя помощников действий было бы помощниками Action-Controller. Они предназначены для вызова из методов контроллера действий. Вы не можете из коробки вызывать их из других объектов Zend.

3 голосов
/ 26 ноября 2010

Помощники действий не предназначены для «поддержки» неактивных элементов вашего приложения.

Ваш $form не имеет понятия зарегистрированных помощников действий ($this->_helper) или даже контекста, в котором настроены помощники.

Вы можете прочитать здесь и узнать, как плагины работают в жизненном цикле Zend Framework: http://www.eschrade.com/page/zend-framework-request-lifecycle-4b9a4288

Если вы пересмотрите свой вопрос и сообщите нам, чего вы пытаетесь достичь, мы можем предложить альтернативные методы.

2 голосов
/ 26 ноября 2010

Вы всегда можете передать объект myActionHelper в форму в качестве параметра.

...