![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Ostatnio męczę się z dodaniem zmiennych z akcji do plików konfiguracyjnych w Symfony. Problem wygląda następująco posiadam sobie przykładową akcję:
I chce aby zmienna $dupa, znalazła się w pliku konfiguracyjnym app.yml i dała się odczytać. Plik app.yml wygląda u mnie w ten sposób: Kod all: dynamiczna_dupa: <?php echo sfConfig::get('dupa') ?> # nie jest widoczna Pewnie problem jest z parsowaniem plików yaml, po dodaniu wartości. Żeby to zadziałało trzeba by zapewne jeszcze raz przeparsować ten plik. Pytanie tylko jak. A może macie jakiś inny pomysł na rozwiązanie tego problemu. Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmm, to działa inaczej niż (chyba) myślisz.
Chodzi o to, że: Kod all: spowoduje zwrócenie za pomocą kodu:dynamiczna_dupa: <?php echo sfConfig::get('dupa') ?> tego co zostanie zapisane podczas tego samego wywołania za pomocą pod zmienną konfiguracyjną dupa. To nigdy nie będzie zapis do tego pliku. Ty chcesz w akcji najpierw zapisać/ustawić zamienną a potem ją odczytać, ale plik konfiguracyjny został już dawno sparsowany więc nie ma to sensu. Musiałbyś zrobić to baaardzo wcześnie, tuż przed parsowaniem pliku app.yml Tak w ogóle to byłoby to bardzo trudno zrobić bo to wszystko dzieje się w bardzo wczesnych momentach przetwarzania żądania. Stąd ten mechanizm dynamicznych zmiennych nie do końca służy temu żeby to programista ustalał wartości dla tych zmiennych z poziomu kodu. Ten mechanizm ma pozwolić na dynamiczność zmiennych konfiguracyjnych zależnych od wartości innych zmiennych konfiguracyjnych. (trochę to zamotane) Na przykład (kod z dokumentacji): Kod all: translation: format: <?php echo sfConfig::get('sf_i18n') == true ? 'xliff' : 'none' ?> Zmienna konfiguracyjna o kluczu app_translation_format będzie równa xliff bądź none ale to nie jest zależne od decyzji programisty ale od zmiennej sf_i18n ustawionej w innym pliku. A możesz powiedzieć co chciałbyś uzyskać? Pomyślimy. Ten post edytował mike_mech 28.03.2007, 19:27:30 |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim dziękuje za odpowiedź. Tak, wiem że jest to zamotane i już tłumaczę do czego jest mi to potrzebne. Wymyśliłem sobie jakiś czas temu aby dopisać w Symfony filtr, który będzie odpowiadał za ustawianie title na *podstawie pliku konfiguracyjnego.
app.yml Kod all: title: main: web site separator: " / " escape: off module: default: # index: [ jeden, dwa, trzy ] index: "Index" example: "Jaka strona przykladowa" contact: index: "Kontakt" Natomiast filtr wygląda w następujący sposób ( umieszczony jest lib/titleFilter.class.php ) : titleFilter.class.php
Taki kod pięknie mi działa i uzyskuje to co chce, mogę nawet dodawać sobie tablicę w ten sposób ustawiam sobie tytułu dla konkretnych akcji w modułach. Kod Web site / Artykuly / [var] / Hello world Problem pojawia się, gdy chciałbym aby [var], była pobierana powiedzmy z bazy danych, czyli była to dynamiczna wartość. Mam nadzieję, że teraz rozjaśniłem o co mi dokładnie chodzi. Może idę w złym kierunku i macie jakiś inny pomysł jak to rozwiązać, każda sugestia będzie widziana. ________________ * - Tak wiem, że można ustawiać tytuł dla konkretnego modułu poprzez view.yml, ale nie podoba mi się ten zapis, ponieważ aby dopisać tytuł trzeba pobrać główny. Dlatego wolałem napisać własne rozwiązanie z uwzględnieniem tablic. ~edit Problem rozwiązany, udało mi się z tym jakoś uporać szczegóły dla zainteresowanych na moim blogu. Trochę inna zmiana tytułu w Symfony |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 12:44 |