Zend: How to use a custom function from a view hel

2019-04-29 16:00发布

Ive got a view helper in library/my/view/helper/gravatar and so in any view I can call $this->gravatar($email).

But how can I access this function in the models (or controllers)?

Sorry if its already been asked but Im new and the documentation is bloody awful in parts.

Thanks everyone

3条回答
The star\"
2楼-- · 2019-04-29 16:40

A better way to be sure the "thing" from the view is actually a view helper is to use the method getHelper("helperName");.

  $this->view->getHelper('gravatar');
查看更多
Evening l夕情丶
3楼-- · 2019-04-29 16:42

In controller:

$this->view->gravatar();

In model (Gordon is right that you should not do it in general):

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

or simply share Zend_View instance via Zend_Registry. In case you don't have View instance you can directly instantiate it like $g = new View_Helper_Gravatar(). To load it you can use Zend_Loader_PluginLoader.

查看更多
干净又极端
4楼-- · 2019-04-29 16:45

In your controller, you can access ViewHelpers through

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

Your model should not call methods from the View, as it would tie the model to the presentation layer. The View may know about the model, but the model should not know about the View.

For Gravatars, there is also a Service and View Helper in the making:

查看更多
登录 后发表回答