Mam szablon Twig Symfony2. Chcę wyprowadzić wartość parametru config w tym szablonie gałązki (numer wersji). Dlatego zdefiniowałem parametr config w ten sposób:
parameters:
app.version: 0.1.0
Mogę użyć tego parametru konfiguracyjnego w kontrolerach, ale nie mam pojęcia, jak go uzyskać w moim szablonie Twig.
symfony
configuration
twig
Timo Haberkern
źródło
źródło
Z łatwością możesz zdefiniować w swoim pliku konfiguracyjnym:
I uzyskaj do niego dostęp w swoim szablonie za pomocą
W przeciwnym razie musi to być sposób z rozszerzeniem Twig, aby ujawnić parametry.
źródło
Możesz także skorzystać z wbudowanego systemu Service Parameters, który umożliwia wyodrębnienie lub ponowne użycie wartości:
Teraz zmienna ga_tracking jest dostępna we wszystkich szablonach Twig:
Parametr jest również dostępny wewnątrz kontrolerów:
Możesz również zdefiniować usługę jako globalną zmienną Twig (Symfony2.2 +):
http://symfony.com/doc/current/templating/global_variables.html
Jeśli zmienna globalna, którą chcesz ustawić, jest bardziej skomplikowana - powiedzmy obiekt - nie będziesz mógł użyć powyższej metody. Zamiast tego musisz utworzyć rozszerzenie Twig i zwrócić zmienną globalną jako jeden z wpisów w metodzie getGlobals.
źródło
W nowszych wersjach Symfony2 (używając
parameters.yml
zamiastparameters.ini
) możesz przechowywać obiekty lub tablice zamiast par klucz-wartość, więc możesz zarządzać swoimi globalnymi w ten sposób:config.yml (edytowany tylko raz):
parameters.yml:
A następnie w pliku gałązki możesz użyć
{{ project.version }}
lub{{ project.name }}
.Uwaga: Osobiście nie lubię dodawać rzeczy do
app
, tylko dlatego, że jest to zmienna Symfony i nie wiem, co będzie tam przechowywane w przyszłości.źródło
Powyższe odpowiedzi są poprawne i działają poprawnie. Użyłem w inny sposób.
config.yml
app.yml
app_twig.yml
Kontroler wewnętrzny:
Wewnątrz pliku szablonu / gałązki:
Aby użyć wyjścia kontrolera:
Kontroler:
plik szablonu / gałązki:
Wspomniałem o różnych dla lepszego zrozumienia.
źródło
Dzięki rozszerzeniu Twig możesz utworzyć funkcję
parameter
Twig:TwigExtension.php:
service.yml:
źródło
Możesz po prostu powiązać
$this->getParameter('app.version')
kontroler z paramem twig, a następnie wyrenderować go.źródło
W confing.yml
W widoku Twig
źródło