sekseksek997
4.06.2010, 09:40:14
Witam, mam problem jak zrobić całe "opakowanie" strony.
SPOSÓB 1:
Kontroler akcji dziedziczy po innym kontrolerze, i w ten sposób u siebie wywołuję jego metodę np opakowanie, która podany string oprawia i kod nagłówka, stopki itp.
SPOSÓB 2:
Widok akcji dziedziczy po innym widoku, w którym w destruktorze wszystko, co ma zostać wysłane do przeglądarki jest obrabiane, dodawane menu itp
Generalnie chodzi mi o to, żebym mógł łatwo zmienić layout jaki chcę do danej akcji poprzez dziedziczenie z odpowiedniej klasy.
Jeżeli wy to robicie w inny sposób będę wdzięczny za podpowiedź.
woj_tas
4.06.2010, 09:46:18
Proponuje poczytać jak to inni robią:
link
sekseksek997
4.06.2010, 09:51:48
Sugerujesz, że mam odwoływać się do poszczególnych widoków przez dekoratora?
Buforuj dane wyświetlane w widokach, a potem wyświetl je w jakieś głównej templatce
sekseksek997
4.06.2010, 10:45:05
Taki miałem początkowo pomysł. Ale menu potrzebuje danych z cache/bazy. U mnie widok w pewnych przypadkach łączy się z modelem.
Tyle wariantów, aż się pogubiłem i nie wiem, który, najlepszy dla siebie wybrać...
Jaki problem z tym dostępem do bazy? Tworzysz helper który pobiera dane i zwraca tablice
sekseksek997
4.06.2010, 11:21:35
Helpery mam w widoku. Czyli jak wysyłam te dane do przeglądarki w klasie response tam ma być opakowanie?
Nie wiem czy w klasie response, to zależy jak masz to zaprojektowane. Najlepiej tam gdzie robisz dispatching
sekseksek997
4.06.2010, 12:32:39
To jest takie rozwiązanie "na sztywno" co jak będę chciał, żeby pewne dane były prezentowane jako pdf? Muszę ingerować w dispatcher...
No to ustawiasz jako plugin, np jak w zend frameworku
plugins tworzysz helper w którym łapiesz kontent, a potem nakładasz na to co chcesz
sekseksek997
4.06.2010, 13:05:04
Pluginy dodaję przy wywołaniu front controllera?
I w PostDispatch w odpowiednim pluginie nakładam to co chcę?
Plugin wywołuje odpowiedni widok opakowania itp?
Nakładam to w klasie Response?
Jedna wada takiego rozwiązania to, ze nie widzę możliwości zmiany rodzaju opakowania w kontrolerze akcji.
Przykładowo: chcę aby news był w formie pdf do pobrania. Tworzę odpowiednią akcję i nic, bo nie mogę wybrać/zmienić pluginu, który przestawi system na pdf?
EDIT
Chyba, ze bym skasował tamtego plugina i dodał plugina PDF Dobrze myślę?
Za bardzo motasz
Zrób tak, że masz główną templatkę bazowego widoku. Po niej wszystkie możliwe warianty sobie dziedziczysz i cudujesz tamże ze wstawianiem ewentualnym widoków potrzebnych w określonych miejscach. Przykład?
<html>
<head>
//tu jakieś nagłówki
<?php echo $this->title ?> </head>
<body>
<?php echo $this->head ?> <?php echo $this->panel ?> <?php echo $this->foot ?> </body>
</html>
Dziedzicząc tenże można przykładowo $this->panel tworzyć jako konkatenację widoków metodą __toString(). Bo kto nam zabroni zrobićw klasie potomnej myk w stylu:
$this->content = ($this->left_panel).($this->right_panel);
gdzie owe left i right panel to będą widoki odpowiednie
Jeśli nie łapiesz o co mi chodzi to zobacz przykładowo jak robi to kohana, bo w ten sposób jest to tam rozwiązane. Może widząc kod złapiesz.
sekseksek997
4.06.2010, 15:13:02
A co, jeżeli do renderowania widoku używam autorskiej klasy templat coś podobnego jak phpbb3
Czyli uniwersalne rozwiązanie nie istnieje? Każdy programista robi to po swojemu...
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.