Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] cache w akcji
Forum PHP.pl > Forum > PHP > Frameworki
AxZx
witam

mam taka akcje domyślną:
  1. <?php
  2. public function executeIndex()
  3.    {
  4.              
  5.        //jezeli user jest zalogowany wyswietlana jest dla niego specjalna strona z przydatnymi dla niego informacjami
  6.        if($this->getUser()->isAuthenticated() AND $this->getUser()->getAttribute('idprofil'))
  7.        {
  8.            $this->forward('default', 'mojaStrona');
  9.        }
  10.        
  11.        //jezeli user nie jest zalogowany wyswietlana jest normalna strona glowna
  12.        else
  13.        {
  14.            $this->mainNiezalogowany();
  15.        }
  16.        
  17.    }
  18. ?>


w pliku cache.yml wlaczam cache dla akcji index.
tylko, że ja w tek akcji chce wyświetlać 2 różne widoki z różnymi danymi (różne zapytania).
jak to można zorganizować tak żeby gdy user już się zaloguje była zmiana cache?
Ravv
W Symfony robię od niedawna, dlatego nie wiem czy mam wiedzę by doradzać (choć i tak post przeterminowany winksmiley.jpg ) - mimo wszystko uważam że...

Można Cachować akcję bądź nie cachować. Nie można (przynajmniej przez .yml) cachować dla zalogowanego i osobno dla zalogowanego. Przez .yml cachujemy albo całą akcję, albo w ogóle. Jak zcachuje się ta akcja - dla zalogowanego nigdy nie wyświetli Ci się to co masz w if'ie, ponieważ filtr Cache po wykryciu odpowiedniego adresu - wyświetli czysty HTML jaki zrobił, więc żadne if'y nie będą sprawdzane i wyświetli się to, co zcachowało.

Obejściem jest dodanie filtru, który działać będzie tak, że jeżeli wykryje gościa - bierze stronę z cache, a jeżeli użytkownika zarejestrowanego - ominie cache i wykona kod akcji.

Pozostaje też coś a'la cachowanie tylko fragmentów kodu akcji.

W sumie o tym wszystkim masz w dokumentacji tutaj
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.