Innerhalb eines View-Helper einen anderen Helper nutzen

Da ich immer mal wieder mitbekomme das einige nicht wissen wie man innerhalb eines View Helpers einen anderen Helper aufrufen bzw. nutzen kann gebe ich hier ein kurzes Beispiel.

Wichtig ist das man die eigene Klasse von Zend_View_Helper_Abstract ableitet. Das ist wichtig da die Basisklasse die Eigenschaft „view“ bereitstellt und die Methode setView(). Die Methode ist wichtig da diese via „Setter-Injection“ befüllt wird. Das heisst das die Funktion automatisch die View innerhalb der Methode „_getPlugin“ in der Zend_View Klasse übergeben bekommt. Man muss sich also nicht mehr um das übergeben der View kümmern. Einfacher geht’s eigentlich nicht.

Wie komme ich jetzt aber zu meinem anderen View Helper? Das ist jetzt ganz einfach. View Helper können direkt über ein View Objekt aufgerufen werden da intern via __call() der entsprechende Helper aufgerufen wird.

Beispiel für einen Helper:

require_once ‚Zend/View/Helper/Abstract.php‘

class MyModule_View_Helper_MyHelper extends Zend_View_Helper_Abstract
{
    public function myHelper()
    {
        return $this->view->partial(‚myfile.phtml‘, array(‚foo‘ => ‚bar‘));
    }
}

 

Was passiert hier? Die View ist bereits übergeben und kann so intern benutzt werden. Das Property \“view\“ hält das Objekt. Der Partial Helper wird direkt über das View Objekt instanziert. Intern benutzt die Zend_View den PluginLoader und läd bei bedarf den entsprechenden Helper. Das kann uns aber egal sein. Wir brauchen nur die richtige Basis-Klasse ableiten