У меня есть помощник представления в library/my/view/helper/gravatar
и так в любом представлении я могу звонить $this->gravatar($email)
.
Но как я могу получить доступ к этой функции в моделях (или контроллеры)?
Извините, если его уже спрошенный, но я являюсь новым, и документация чертовски ужасна в частях.
Спасибо все
В вашем контроллере вы можете получить доступ к ViewHelpers через
$this->view->gravatar($email)
. Ваша модель не должна вызывать методы из представления, так как это привяжет модель к уровню представления. . Представление может знать о модели, но модель не должна знать о представлении.
Для Gravatars также находится помощник по обслуживанию и представлению:
Лучший способ убедиться, что "объект" из представления на самом деле является помощником представления, - это использовать метод getHelper ("helperName");
.
$this->view->getHelper('gravatar');
В контроллере:
$this->view->gravatar();
В модели (Гордон прав, что в целом этого делать не стоит):
Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer')->getView()->gravatar()
или просто поделитесь экземпляром Zend_View через Zend_Registry. Если у вас нет экземпляра View, вы можете напрямую создать его, например $g = new View_Helper_Gravatar(). Для его загрузки вы можете использовать Zend_Loader_PluginLoader.