This post comes from the first version of this blog.
Please send me an email if anything needs an update. Thanks!
Problemy, jakie napotykamy podczas programowania wszelkiego rodzaju aplikacji można podzielić na dwie główne kategorie - wymagające doświadczenia i wymagające wiedzy. O ile te związane z doświadczeniem można rozwiązać bez pomocy innych - rozwiązania można po prostu wywnioskować na podstawie doświadczenia, o tyle związane z wiedzą nie są takie proste. Ich rozwiązanie to zdobycie informacji o tym, co należy zrobić, żeby było dobrze, a do rzeczonej informacji czasem bardzo ciężko się dostać. W dzisiejszym wpisie chciałbym właśnie dla swojej i Waszej referencji opisać jeden problem związany z “wiedzą” w symfony.
symfony: Pobieranie wszystkich wiadomości typu "flash".
Framework symfony, podobnie jak kilka innych na rynku oferuje funkcjonalność tzw. "flashów" [flashy?]. Czym jest flash? Otóż, jest to jednorazowa wiadomość [komunikat, informacja - ogólnie jakaś wartość, najczęściej typu string],Flashe w symfony tworzymy w następujący sposób:
|
|
A następnie możemy je wyświetlić w następujący sposób:
|
|
Problem powstaje jednak w momencie, kiedy chcemy uzyskać listę wszystkich zarejestrowanych w trakcie wykonywania skryptu wpisów. Otóż zmienna $sf_user [obiekt klasy sfUser] niestety nie posiada metody getAllFlashes(), albo jakiejkolwiek innej, która realizowałaby jej założenia.
Oczywiście my wiemy w kontrolerze, jakie nazwy nadaliśmy naszym wiadomościom, ale dobrze byłoby dostać listę zarejestrowanych, zamiast próbować wszystkich identyfikatorów. Przyznam, że w Internecie jest bardzo mało informacji na ten temat i aż się zdziwiłem, kiedy znalazłem rozwiązanie dopiero gdzieś w małym poście na grupach dyskusyjnych symfony. Czy nikt nie miał wcześniej tego problemu i nie potrzebował takiej listy? Dziwne, ale może faktycznie każdy używał flashów zgodnie z ich założeniem używając jednej nazwy w całym serwisie.
Cóż, nawet jeśli tak było, to zgodnie ze wstępem publikuję kod, pozwalający na pobranie listy wszystkich wiadomości typu flash w symfony 1.4:
|
|
W zmiennej $allFlashes znajduje się prosty array zawierający klucze i wartości poszczególnych flashów. Można z niego skorzystać np. tak:
|
|
Tym pozytywnym akcentem pragnę zakończyć dzisiejsze rozważania - do zobaczenia w piątek!