Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]poczatki - hasFlash i getFlash
Forum PHP.pl > Forum > PHP > Frameworki
mareknn
Witam, zaczynam sie bawic z Symfony i robie to zgodnie z polecanym tutaj na forum tutorialem Jobeet.
Poki co chyba mi dobrze idzie, ale w 4 rozdziale nie rozumiem jednej rzeczy

  1. <div id="content">
  2. <?php if ($sf_user->hasFlash('notice')): ?>
  3. <div class="flash_notice">
  4. <?php echo $sf_user->getFlash('notice') ?>
  5. </div>
  6. <?php endif ?>
  7.  
  8. <?php if ($sf_user->hasFlash('error')): ?>
  9. <div class="flash_error">
  10. <?php echo $sf_user->getFlash('error') ?>
  11. </div>
  12. <?php endif ?>

rozumiem, ze to przechwytuje jakies powiadomienia i bledy, tylko jakie? co robi ta zmienna $sf_user ? has to pewnie sprawdza czy jest, a get ustawia, a co tutaj robi to Flash?

To pewnie dla wielu blahostka, ale nie do konca to rozumiem, wiec prosilbym o wytlumaczenie smile.gif
Crozin
Flashe (z ang. można to przetłumaczyć jako "mignięcia") to nic innego jak zwykłe dane zapisane w sesji. To co je wyróżnia to to, że są automatycznie kasowane przy wykonaniu kolejnego żądania, dlatego używa się ich głównie do wyświetlania komunikatów.

Wyobraź sobie, że masz formularz i po jego wypełnieniu zapisujesz jakieś dane do bazy (np. nową prywatną wiadomość) i przenosisz użytkownika na stronę główną. Obsługa formularza wygląda mniej-więcej tak: Jeśli dane są prawidłowe, utwórz nowy rekord w bazie danych. Następnie przekieruj na stronę główną. (jak wiesz przekierowanie to nic innego jak wysłanie prośby do przeglądarki by automatycznie wykonała nowe żądanie - dlatego też komunikat musi być zapisany w sesji - inaczej byłby niedostępny "w drugim żądaniu").
Oczywiście na stronie głównej wypadałoby wyświetlić komunikat o tym, że wiadomość została wysłana. Taka wiadomość jest jednorazowa. Gdy użytkownik odświeży stronę główną nie powinno już jej być bo przecież nie wysłał już żadnej wiadomości. Gdy przejdzie na podstronę "kontakt" po czym wróci na stronę główną również nie powinno jej być.

Normalnie musiałbyś zrobić coś w stylu: Jeżeli istnieje zmienna sesyjna "komunikat" wyświetl ją po czym usuń ją z sesji.. Wszystko co robią flashe to zwolnienie Ciebie z konieczności ręcznego usunięcia komunikatu.

Cytat
co robi ta zmienna $sf_user ?
Zmienna ta jest automatycznie dodawana do każdego szablonu i zawiera obiekt reprezentujący użytkownika (w sensie internauty/sesji, a nie konkretnego wpisu w bazie danych). Jest to odpowiednik $this->getUser() wywołanego wewnątrz kontrolera.
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.