Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: smarty+cache+mvc
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
halfik
Witam.
Otoz mam aplikacje na MVC.
Wiadomo - jest jakis kontroler itd.
Kazdy element serwisu jest u mnie tzw. sekcja. Kontroler na podstawie $_REQUEST tworzy odpowiednia sekcje, ustawia jej pewne parametry jesli zachodzi potrzeba i wywoluje metode, ktora w obiekcie sekcji odpowiada za wygenerowanie strony.

Przyklad takiej sekcji:

  1. <?php
  2.  
  3. require_once ('./libs/smarty/Smarty.class.php');
  4. require_once ('./Section.php');
  5.  
  6. class Profil extends Section
  7. {
  8. protected $user;
  9. public function __construct ($requestObj)
  10. {
  11. Section::__construct($requestObj);
  12. }
  13.  
  14. public function show_page ()
  15. {
  16.  $this->page->assign('srodek_tpl', 'srodek/profil.tpl');
  17.  $this->page->display('index.tpl');
  18. }
  19.  
  20. } 
  21.  
  22. ?>


I teraz... musze dodac cachowanie smarty.
Oczywiscie niektore elementy szablonow sa dynamiczne i nie moge ich cachowac.

Zatem nalezaloby uzyc {insert name="get_user_name"}. w taki wypadku w skrypcie powinienem miec funkcje insert_get_user_name ().

Ale nie chce miec nic wiecej niz definicje klasy w sekcji. I teraz czy jest mozliwosc, a jesli tak to jak to zrobic, aby w {insert} wywolac metode klasy?

ps.
no to kicha ;p pare h kombinowania i jedno moge stwierdzic: cachowanie w smarty to 1 wielka kicha ;p dlaczego nikt tam nie wpadl na pomysl na {dont_cache} albo cos podobnego. cache smarty i mvc nie ida w paze.
dr_bonzo
Przenosze do Systemow szablonow, bo problem jest zwiazany tylko ze smartym i {insert}
angel2953
Cytat(halfik @ 6.12.2006, 03:18:37 ) *
no to kicha ;p pare h kombinowania i jedno moge stwierdzic: cachowanie w smarty to 1 wielka kicha ;p dlaczego nikt tam nie wpadl na pomysl na {dont_cache} albo cos podobnego. cache smarty i mvc nie ida w paze.

w manualu jest na to sposób opisany jak dany fragment strony wyłączyć z cache'owania:
  1. <?php
  2. $smarty->caching = 1;
  3. /* f-cja, która zwraca zawartość bez zapisywania w cache;u */
  4. function smarty_block_dynamic($param, $content, &$smarty) {
  5. return $content;
  6. }
  7. /* rejestrujemy f-cje */
  8. $smarty->register_block('dynamic', 'smarty_block_dynamic', false);
  9.  
  10. $smarty->display('index.tpl');
  11. ?>

i w szablonie
  1. Z cache: {'0'|date_format:'%D %H:%M:%S'}
  2. {dynamic}Dynamicznie: {'0'|date_format:'%D %H:%M:%S'}{/dynamic}
Sh4dow
najprostrzym sposobem wywolania metody w {insert} jest stworzenie funkcji insert_.... gdzie wywolujesz ta metode. Mozesz swoje sekcje podzielic na zawsze dynamiczna oraz czesciowo cach'owalna. PIerwsza wywolywana by byla zawsze, np przekazujac dane dla funkcji insert, pozniej sprawdzasz cache smarty jesli aktualna to omijasz wywolywanie reszty sekcji, jesli nie to generujesz dane sekcji, wyswietlasz i robisz cache.
To tak w skrocie, ale jak to rozwiarzesz to juz bedzie nalezec do ciebie.
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.