Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> multiwidoki, sprawa czysto filozoficzna ;)
chmolu
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

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


Witam,

Jest jedna rzecz, z którą jakoś nie mogę dać sobie rady. Wbrew pozorom problem nie jest taki znów banalny.
Chodzi o to, jak w ładny sposób rozwiązać kwestię kilku widoków na stronie, tzn: nagłówek, menu, treść, reklama, stopka. Do tej pory robiłem to w następujący sposób:

  1. // plik header.php
  2. <?php $this->executeHelper('MenuViewHelper'); ?>
  3. <head><title><?php echo $title ?></title></head>
  4.  
  5. ---------------------
  6.  
  7. //plik article.php
  8. inlude('header.php');
  9.  
  10. tutaj jakas tresc
  11.  
  12. include('footer.php');


Szablon article.php jest wywoływany przez główną akcję. W includowanych plikach istnieje możliwość wywołania klasy typu helper, które wyciągają dane z bazy i robią wszystkie assigny. Do tej pory ten sposób mi odpowiadał, jednak teraz chcę, by można było cachować poszczególne części strony. Nie mówię tu o serializacji obiektów, czy tablic, ale o cachowaniu gotowego htmla.

Powiedzmy, że mam jedną akcję wywoływaną w urlu i stronę, która składa się z: nagłówka, menu, treści artykułu, listy najnowszych tematów na forum oraz ze stopki. Przy czym, menu i treść artykułu są cachowane. Reszta nie.

Jak to ładnie rozwiązać? Zapraszam szanowne grono do dyskusji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
chmolu
post
Post #2





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 8.10.2004

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


Cytat
W szablonie głównym dodawaj pozostałe szablony (np. menu) poprzez rozszerzoną metodę Include() która będzie potrafiła sprawdzić czy istnieje Cache (w formie czystego HTMLa wygenrowanego wcześniej) dla danego szablonu.

Jeżeli istnieje to go zwróci w czystej formie, a jeżeli nie to przystąp do generowania szablonu tak jak to robisz teraz. I dopiero w menu.tpl użyj odpowiednich ViewHelperów wykonujących odpowiednie zapytania do DAO i wykonujących wymagane Assigny().

Potem zwracasz HTML, a ww metoda Include() zapisuje go do Cache oraz zwraca do głównego szablonu.


Myślałem trochę nad tym. No dobrze, mogę zrobić $this->include() i to sprawdzi mi, czy jest cache. Powiedzmy, że wywołuję szablon show_article.tpl.php. Wewnątrz includuję header.tpl.php. Metoda $this->include sprawdza, czy header posiada cache. Jeśli posiada, to zostaje wczytany. Ale... co jeśli w pliku header.tpl.php jest dołączany jeszcze menu.tpl.php??

Taka metoda nie nadaje się do większej hierarchii widoków.

Naprawdę już nikt nie ma pomysłu, jak to zrealizować??
Go to the top of the page
+Quote Post

Posty w temacie
- chmolu   multiwidoki   4.08.2005, 15:05:18
- - bela_666   Ja robię tak. Określam requesty, które są dopasowy...   4.08.2005, 16:11:03
- - chmolu   Można bardziej szczegółowo? Z przykładami   4.08.2005, 16:23:42
- - bela_666   Fragment konfiga [XML] pobierz, plaintext <requ...   4.08.2005, 16:37:33
- - chmolu   Hm... sam nie wiem. Pomyślę jeszcze nad tym. A mo...   4.08.2005, 16:52:42
- - chmolu   Wyskrobałem coś takiego: [PHP] pobierz, plaintext...   4.08.2005, 21:04:02
- - Vengeance   W szablonie głównym dodawaj pozostałe szablony (np...   4.08.2005, 21:48:54
- - NuLL   @chmolu - fajowski pomysł z kompozytowym widokiem ...   4.08.2005, 22:24:56
- - chmolu   CytatW szablonie głównym dodawaj pozostałe szablon...   6.08.2005, 17:08:54
- - NuLL   Pomysł mam Tylko zapomniałem o nim tu napisać. Ta...   6.08.2005, 17:28:20
- - chmolu   Moglbys rozwinąć tę myśl? Wygląda ciekawie. Jakiś...   6.08.2005, 17:41:07
- - NuLL   Spróbuje coś jutro skodzić. Sam walcze z buforami ...   6.08.2005, 17:48:16
- - chmolu   Spróbujmy jeszcze bardziej skomplikować sytuację :...   6.08.2005, 18:06:15
- - NuLL   [PHP] pobierz, plaintext <?php $buffer=new...   6.08.2005, 18:11:14
- - Vengeance   chmolu: Wydaje mi się że powoli zaczynasz przesadz...   6.08.2005, 20:06:00
- - NuLL   @vee - to jest przepis na multiwidok wg. mnie a ni...   6.08.2005, 20:10:49
- - Vengeance   pisalem juz wiele rzeczy, i zwykly glowny TPL z in...   6.08.2005, 20:21:26
- - chmolu   Cytatchmolu: Wydaje mi się że powoli zaczynasz prz...   6.08.2005, 20:41:25
- - Vengeance   "życie kompilować" hmm google ani wiki n...   6.08.2005, 23:20:10
- - matid   A co do multiwidoków, to czy najlepszym wyjściem n...   6.08.2005, 23:29:06
- - chmolu   Cytat"życie kompilować" hmm google ani w...   7.08.2005, 00:12:38
- - chmolu   CytatSprawdzone rozwiązanie stosowane w Smalltalku...   7.08.2005, 11:54:11
- - emilio   A to Composite View ?   7.08.2005, 13:23:16
- - chmolu   A masz jakąś propozycję, jak to sensownie przenieś...   7.08.2005, 13:31:01
- - emilio   To jest implementacja wzorca Composite (skorzystał...   7.08.2005, 14:57:11
- - chmolu   Hmm.. ciekawe, jakby to się sprawdziło w praktyce....   7.08.2005, 16:21:50


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: 4.10.2025 - 00:58