Tworząc własne helpery widoku domyślnie dołączane są helpery zawierające się w przestrzeni nazw Zend_View_Helper_ i ulokowane w application/views/helpers. Zdaża się jednak, że w projekcie używamy określonej przestrzeni nazw dla klas. W moich projektach mam zdefiniowaną następująco metodę _initAutoload w bootstrapie, gdzie definiuję przestrzeń nazw jako “SmartGroup_”.
protected function _initAutoload() { $autoloader = new Zend_Application_Module_Autoloader(array( 'namespace' => 'SmartGroup_', 'basePath' => dirname(__FILE__), )); return $autoloader; }
Dzieki temu w aplikacji mogę stosować nazwy klas rozpoczynające się od SmartGroup_Model_. Gdy jednak chcemy stworzyć własny view helper korzystając ze zdefiniowanej przestrzeni nazw, czyli np. SmartGroup_View_Helper_MyHelper, spotka nas niemiłe rozczarowanie. Nie zostanie on bowiem wywołany i pojawi się błąd związany z brakiem stosownego helpera. Dzieje się tak, ponieważ w plikach widoku odwołujemy się do tego helpera poprzez:
echo $this->myHelper();
Zend rozwiązuje takie wywołanie na Zend_View_Helper_MyHelper, co oczywiście jest błędne. Aby framework mógł sobie poradzić z tym i prawidłowo rozwiązywac nazwę należy w pliku konfiguracyjnym (zwykle /application/config/application.ini) dodać odpowiedni wpis:
resources.view.helperPath.SmartGroup_View_Helper_ = APPLICATION_PATH "/views/helpers"
Oczywiście powyższy wpis jest odpowiedni dla mojej przestrzeni nazw, czyli SmartGroup. Cały widz polega tylko na poinformowaniu o ścieżce do helperów widoku zdefiniowanych poprzez odpowiedni namespace.