Temat: Custom view helper
Kamil Kuźmiński:
Załóżmy, że mam taki plik:
/application/views/helpers/AsdHelper.php o treści
class AsdHelper {...}
to wtedy jako parametry addHelperPath() podaję kolejno
/views/helpers/AsdHelper.php i AsdHelper
?
W pierwszym parametrze podajesz ścieżkę tak, aby autoloader mógł ją chwycić - możesz też podać ścieżkę bezwzględną lub zacznij od '/application/views/helpers/' (nie wiem, jak poustawiałeś sobie ścieżki ;-))
W drugim parametrze przekazujesz prefiks, jeśli Twoja klasa nazywa się AsdHelper, to żadnego prefiksu ni ma. Tutaj albo przekaż pusty string albo dorzuć jakiś prefiks do klasy i wywołaj:
$view->addHelperPath(APPLICATION_PATH . '/views/helpers/', 'My_');
Klasa helera:
class AsdHelper extends Zend_View_Helper_Abstract
{
}
Kamil Kuźmiński:
Ten kod który podałeś mogę wrzucić do Bootstrapa do _initView()?
mile widzane ;-)
BTW
ja, jak chyba zdecydowana większość Zendowców umieszczam własne klasy bibliotek wewnątrz jednego folderu wewnątrz katalogu library. Czyli np.:
library/Benfi, dalej mam library/Benfi/View/Helper i tam wrzucam stado helperków ;-)
Wtedy w _initView() w Bootstrapie daję np.:
protected function _initView()
{
$view = new Zend_View();
$view->addHelperPath(LIBRARY_PATH . '/Benfi/View/Helper/', 'Benfi_View_Helper_');
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);
return $view;
}
Stała LIBRARY_PATH to bezwzględna ścieżka do library/Benfi
Oczywiście autoloader musi wiedzieć o Twoim folderze z bibliotekami ;-)
Możesz też rozwiązać też wg własnego uznania, za co bardzo cenię ZF ;-)
Patrycjusz Omiotek edytował(a) ten post dnia 28.03.10 o godzinie 18:46