Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Użycie view helper w pluginie
Forum PHP.pl > Forum > PHP > Frameworki
ShadowD
Mam nie lada problem, stworzyłem plugin który na podstawie wpisów w bazie wybiera odpowiednią skórkę dla strony, tutaj wszystko ładnie działa i nie ma problemu. Chciał mym by mój system miał kilka głównych helperów więc pomyślałem by stworzyć je jako biblioteki dodałem w SS_Helpers_Menu () (library/ss/Helpers/Menu.php) klasę:

  1. class Ss_Helpers_Menu extends Zend_View_Helper_Abstract
  2. {
  3. public function menu()
  4. {
  5. echo 'qw';
  6. }
  7. }


I chciał bym z niego korzystać, jednak nie mam pojęcia jak a dokumentacja niestety nie pomaga w tej kwestii, ofc dodałem w configu namespace Ss.

Kolejnym pomysłem było stworzenie normalnego helpera, ale nie wiem w jaki sposób mógł bym ich używać, $this->helper() w pluginie nie koniecznie pomaga używam konstrukcji "$this->view->menu();" wolał bym co prawda poprzednie rozwiązanie ponieważ helper menu będzie używany w kilku miejscach w różnych modułach, ale nie mam pojęcia jak to sensownie połączyć, może macie jakieś pomysły? :-(

Wiem że można by stworzyć klasę Ss_Helpers_Menu generować w niej tablicę z całą zawartością menu, przekazać ją do widoku i tam skorzystać z helpera który to poukłada i ogarnie w znaczniki.

Które rozwiązanie jest najbardziej prawidłowe?
piotr.pasich
Jeżeli potrzebujesz korzystać z pewnej funkcjonalności i w helperze widoku i w pluginie to najlepiej jest napisać osobną klasę dla tej funkcjonalności, a następnie skorzystać z niej w helperze i w pluginie. To, że nie można znaleźć prostego dostępu do helpera widoku w pluginie o czymś świadczy - głównie o tym, że nie powinno go tam być.


Żeby skorzystać z helpera widoku trzeba nie tylko dodać namespace, ale także ścieżkę do helperów - w bootstrapie dodaj:

  1. $this->bootstrap('view');
  2. $view = $this->getResource('view');
  3. $view->addHelperPath('../application/views/helpers', 'Views_Helpers');


Myślę, że tutaj nie trzeba dużo tłumaczyć. Następnie wg podanej kalsy korzystamy w widoku z $this->menu()

Generowanie tablicy w widoku też nie jest dobrym pomysłem. Najlepiej jest do tego stworzyć nowy widok a najlepiej akcję kontrolera , a następnie skorzystać z actionStacka w kontrolerach (pamiętaj że jest tak kolejk filo - first in last out), albo z helpera $this->action - która wywołuje w konkretnym miejscu kod. W tym przypadku lepsze będzie drugie rozwiązanie. Z pierwszego korzystamy do rozmieszczenia bloków w layoucie np. menu, banerów, polecanych artykułów.

W razie dalszych pytań z chęcią odpowiem.

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.