2010-02-28 6 views

Antwort

7

In Ihrem Controller können Sie Viewhelper durch

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

Ihr Modell zugreifen sollte aus der Sicht nicht Methoden aufrufen, wie es das Modell an die Präsentationsschicht binden würde. Die Ansicht kann das Modell kennen, aber das Modell sollte nichts über die Ansicht wissen.

Für Gravatars, gibt es auch eine Service-und View-Helfer in der Herstellung:

+0

Wohin soll diese Gravatar-Funktion gehen? Es muss in Teilen meiner modularen Website verfügbar sein – bluedaniel

+0

@bluedaniel kann nicht sagen, ohne Ihre App zu kennen. Wenn Sie sicher sind, dass Sie dies im Modell benötigen, z. Als Teil Ihrer Domänenlogik machen Sie Gravatar entweder zu einem Service in Ihrem Modell oder fügen getGravatar() zur Klasse hinzu, die sie aufruft. – Gordon

+0

Es gibt zu viele Modelle, die in jede Klasse kopiert/eingefügt werden können, aber wo würde es sich um einen websiteweiten Service handeln? – bluedaniel

0

In Controller:

$this->view->gravatar(); 

In Modell (Gordon ist richtig, dass man es in der Regel nicht tun soll):

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

oder einfach teilen Zend_View Instanz über Zend_Registry. Falls Sie View-Instanz nicht haben, können Sie sie direkt instanziieren wie $ g = new View_Helper_Gravatar(). Um es zu laden, kannst du Zend_Loader_PluginLoader benutzen.

1

Ein besserer Weg, um sicher zu sein, dass das "Ding" aus der Ansicht eigentlich ein View-Helfer ist, ist die Methode getHelper("helperName");.

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