Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Zend_Cache + Zend_Layout + Menu uzytkownika
Eagle
post 14.09.2009, 03:50:01
Post #1





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Witam

Ma ktoś jakiś pomysł/sposób aby nie keszować danego elementu strony (w moim wypadku jest, to menu)?

Pozdrawiam
Go to the top of the page
+Quote Post
nexis
post 14.09.2009, 12:19:29
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


A jak cache-ujesz to obecnie, skoro chcesz pewien element wykluczyć?


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
Eagle
post 14.09.2009, 13:49:56
Post #3





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Obecnie całym cache zajmuje się plugin (Zend_Controller_Plugin_Abstract). Jako frontend używam 'page'
Na początku cache był łapany w dispatchLoopStartup, później preDispatch jednak nie przekaże danych do layoutu.

Myślałem też aby użyć Action Helpera (Zend_Controller_Action_Helper_Abstract). Jednak nie wiem jak przerwać akcje kiedy są dane w cache.
Go to the top of the page
+Quote Post
seth-kk
post 14.09.2009, 13:58:27
Post #4





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


generuj menu przed rozpoczeciem zbierania tresci do cache - np zbieraj tylko to podaja kontrolery zakladajac ze menu pochodzi z helpera


--------------------
Go to the top of the page
+Quote Post
Eagle
post 14.09.2009, 14:20:19
Post #5





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Tylko w którym miejscu powinienem robić cache ?
Go to the top of the page
+Quote Post
seth-kk
post 14.09.2009, 15:10:09
Post #6





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


na ogol plugin jest najlepszym miejscem


--------------------
Go to the top of the page
+Quote Post
Eagle
post 14.09.2009, 15:57:24
Post #7





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Tak mam teraz.

layout.phtml
  1. <html>
  2. <head>
  3. <title>Newsy</title>
  4. </head>
  5. <body>
  6. <div class="content">
  7. <?php echo $this->layout()->content; ?>
  8. </div>
  9. <div class="menu">
  10. <?php echo $this->Menu(); ?>
  11. </div>
  12. </body>
  13. </html>


  1. class IndexController extends Zend_Controller_Action
  2. {
  3. public function indexAction()
  4. {
  5. $i = 'Ble ble ble';
  6. }
  7. }


Do cache leci cała strona - od "<html>".
Jeżeli plugin znajdzie cache, to jest pomijany cały kontroler. Więc strona nie jest renderowana na nowo = nie wyświetli się menu użytkownika.
Go to the top of the page
+Quote Post
seth-kk
post 14.09.2009, 16:12:08
Post #8





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


wiec jesli w cache bedzie ladowalo tylko to co podaja controllery powinno spelniac oczekiwania
cos jak tutaj


--------------------
Go to the top of the page
+Quote Post
Eagle
post 14.09.2009, 21:36:22
Post #9





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Na tym przykładzie się wzorowałem smile.gif

Jedna wersja pluginu łapie tylko dane z kontrolera, jednak nie wiem jak je przekazać do widoku.
Go to the top of the page
+Quote Post
seth-kk
post 14.09.2009, 23:36:18
Post #10





Grupa: Zarejestrowani
Postów: 444
Pomógł: 79
Dołączył: 26.05.2009

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


jesli dobrze pamietam front controller musi wykonac przynajmniej jedna akcje wiec mozesz stworzyc kontroler/akcje ktory podaje odpowiednia tresc z cache


--------------------
Go to the top of the page
+Quote Post
Eagle
post 15.09.2009, 23:28:28
Post #11





Grupa: Zarejestrowani
Postów: 170
Pomógł: 14
Dołączył: 16.03.2007

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


Znalazłem! smile.gif
Przez przypadek ale znalazłem smile.gif

Dla potomnych:

Plugin: (link podany wyżej)
  1. if (false !== ($response = $this->_getCache()))
  2. {
  3. $response->insert('test','cache cache cache!');
  4. $response->sendResponse();
  5. }


Layout:
  1. <?php
  2. // [...]
  3. echo $this->layout()->test;
  4. // [...]
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 1.07.2025 - 10:54