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.