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.

Zend Framework: tworzenie helpera widoku we własnej przestrzeni nazw
Tagged on:                 

Leave a Reply

Your email address will not be published. Required fields are marked *

Social Widgets powered by AB-WebLog.com.