Zend: Как использовать пользовательскую функцию из помощника вида в контроллере? - PullRequest
5 голосов
/ 01 марта 2010

У меня есть помощник вида в library/my/view/helper/gravatar, поэтому в любом представлении я могу вызвать $this->gravatar($email).

Но как мне получить доступ к этой функции в моделях (или контроллерах)?

Извините, если его уже спросили, но я новичок и документация ужасна по частям.

Спасибо всем

Ответы [ 3 ]

7 голосов
/ 01 марта 2010

В вашем контроллере вы можете получить доступ к ViewHelpers через

$this->view->gravatar($email)

Ваша модель не должна вызывать методы из представления, так как она связывает модель с уровнем представления. Представление может знать о модели, но модель не должна знать о представлении.

Для Gravatars также существует Помощник по обслуживанию и просмотру:

1 голос
/ 01 марта 2010

Лучший способ убедиться, что «вещь» из представления на самом деле является помощником вида, - это использовать метод getHelper("helperName");.

  $this->view->getHelper('gravatar');
0 голосов
/ 01 марта 2010

В контроллере:

$this->view->gravatar();

В модели (Гордон прав, что вообще не стоит этого делать):

Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer')->getView()->gravatar()

или просто поделиться экземпляром Zend_View через Zend_Registry. Если у вас нет экземпляра View, вы можете напрямую создать его экземпляр, например $ g = new View_Helper_Gravatar () Для его загрузки вы можете использовать Zend_Loader_PluginLoader.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...