Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Powtarzające się elementy w wielu kontrolerach
ulisses
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.08.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
grOm
post
Post #3





Grupa: Zarejestrowani
Postów: 57
Pomógł: 4
Dołączył: 6.10.2005

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
ulisses
post
Post #4





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 19.08.2004

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
zend
post
Post #5





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Pilsener
post
Post #6





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
zend
post
Post #7





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

Ostrzeżenie: (0%)
-----


Czytałeś performance guide?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.12.2025 - 13:55