Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Powtarzające się elementy w wielu kontrolerach
Forum PHP.pl > Forum > PHP > Frameworki
ulisses
Jak to najlepiej zrealizować.

Przyznam że lekko już głupieję. Chcę na każdej stronie mieć umieszczoną wyszukiwarkę, drzewo kategorii i inne "generyczne boxy". Umieszczone na layoucie. Będzie potrzebna komunikacja z bazą danych i obsługa. Nie chcę powielać tego we wszystkich kontrolerach - bezsensowne.

Co zastosować?
Helpery Akcji, Pluginy, "Master Controller" z którego będą dziedziczyły wszystkie inne kontrolery? Może coś jeszcze czego nie dostrzegam? To musi być częsty problem, więc musi być też optymalnie rozwiązane.

Jakie są praktycznie wady zalety powyższych rozwiązań?

Pozdrawiam
darko
W obrębie jednego kontrolera dla wszystkich akcji kod wrzucasz do metody init(). Natomiast, jeśli chcesz, aby jakiś fragment funkcjonalności był dostępny dla wszystkich kontrolerów - powinieneś zastosować budowę modułową oraz wykorzystać Zend_Layout, gdzie umieszczasz elementy statyczne. Skrypty często powielane i dołączane dla wielu kontrolerów możesz dołączać korzystając z Bootstrapów, a dokładnie Bootstrapa modułu domyślnego. Możesz wreszcie napisać własny plugin i w jakiejś metodzie inicjującej w głównym Bootstrapie zarejestrować go we front kontrolerze. Możliwości jest sporo, jednak w Twojej sytuacji rozsądne wydaje się wrzucenie elementów statycznych do layoutu (pod warunkiem, że wyszukiwarka i drzewko mają być wszechobecne), skrypty js i arkusze css dołączałbym w Bootstrapie domyślnego modułu, a akcje zaimplementował w kontrolerze domyślnego modułu. Mam nadzieję, że nie namieszałem.
grOm
ja to rozwiązałem przez napisanie pluginu ktory w zależności od wybranego modułu ładuje jakies wspólne dane do view'a
ulisses
Cytat(grOm @ 3.07.2010, 03:55:08 ) *
ja to rozwiązałem przez napisanie pluginu ktory w zależności od wybranego modułu ładuje jakies wspólne dane do view'a

Czy dobrze rozumiem że w pluginie inicjalizujesz połączenie do bazy, wydobywasz informacje (np. strukturę kategorii drzewa) i przesyłasz wydobyte dane do widoku?
zend
W pluginie modulu pobierasz dane, ustawiasz do layoutu, a w layoucie
  1. if(isset($this -> layout() -> categories))
  2. foreach($this -> layout() -> categories as $xxx)
  3. echo $xxx;


Możesz też napisać view helper, który będzie robił to samo, decyzja należy do Ciebie
Pilsener
A nie prościej po prostu wywołać daną akcję w widoku?
  1. <?php echo $this->action('menu','index','module'); ?>


Lub zrobić to wykorzystując layouty? Przecież problem dotyczy tylko zbudowania "drzewa widoków". Angażowanie helperów czy pluginów jakoś średnio mi tu pasuje.
zend
Czytałeś performance guide?
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.