Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> smarty+cache+mvc, problem ;p
halfik
post
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 0
Dołączył: 17.05.2003
Skąd: Nysa

Ostrzeżenie: (10%)
X----


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.

Ten post edytował halfik 6.12.2006, 05:12:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Przenosze do Systemow szablonow, bo problem jest zwiazany tylko ze smartym i {insert}
Go to the top of the page
+Quote Post
angel2953
post
Post #3





Grupa: Zarejestrowani
Postów: 199
Pomógł: 5
Dołączył: 8.07.2004
Skąd: gdynia

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


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





Grupa: Zarejestrowani
Postów: 569
Pomógł: 0
Dołączył: 17.08.2003
Skąd: Dąbrowa Górnicza

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


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.

Ten post edytował Sh4dow 6.12.2006, 15:10:53
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: 22.08.2025 - 20:02