Zend:如何使用控制器中视图助手的自定义函数?

时间:2010-02-28 22:54:05

标签: php zend-framework models

我在library/my/view/helper/gravatar中有一个视图助手,因此在任何视图中我都可以调用$this->gravatar($email)

但是如何在模型(或控制器)中访问此功能?

很抱歉,如果它已被问到,但是我是新的,而且文档的部分内容非常糟糕。

谢谢大家

3 个答案:

答案 0 :(得分:7)

在您的控制器中,您可以通过

访问ViewHelpers
$this->view->gravatar($email)

您的模型不应该从View调用方法,因为它会将模型绑定到表示层。 View可能知道模型,但模型不应该知道View。

对于Gravatars,还有一个服务和视图助手:

答案 1 :(得分:1)

确保视图中的“事物”实际上是视图助手的更好方法是使用方法getHelper("helperName");

  $this->view->getHelper('gravatar');

答案 2 :(得分:0)

在控制器中:

$this->view->gravatar();

在模特中(戈登是对的,你不应该这样做):

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

或者只是通过Zend_Registry共享Zend_View实例。如果您没有View实例,可以像$ g = new View_Helper_Gravatar()一样直接实例化它。要加载它,您可以使用Zend_Loader_PluginLoader。