2012-06-14 11 views
6

zmienna globalna dla szablonu Twig może być zdefiniowana wewnątrz config.yml z Symfony2 aplikacji, jak w poniższym przykładzie:Czy w kontrolerze Symfony2 dostępna jest zmienna globalna dla szablonu Twig?

twig:     
    globals: 
     var_name: var_value 

Stąd, w każdym szablonie Twig zmienna może zostać wykorzystane w następujący sposób:

{{var_name}} 

że pokaże

var_value 

Czy znasz taki sposób, aby uzyskać wartość zmiennej globalnej w sterowniku Symfony2?

Odpowiedz

22

Wydaje się, że nie ma sposobu na zdobycie określonej wartości. Ale możesz uzyskać pełną gamę globów z usługi gałązek, a następnie złap ją przesunięcie.

$twig = $this->container->get('twig'); 
$globals = $twig->getGlobals(); 
echo $globals['var_name']; 
+1

Dzięki, to jest bardzo interesujące. – JeanValjean

2

Nie było jasne, czy chcesz uzyskać dostęp do gałązka var w sterowniku, lub po prostu dostęp do globalnej var z config. Oto w jaki sposób uzyskać dostęp do globalnego var z pliku konfiguracyjnego ...

można umieścić wartość w sekcji Parametry config ..

parameters: 
    var_name: some_value 

Teraz można uzyskać do niego dostęp z kontrolera ..

$value = $this->container->getParameter('var_name'); 
+1

Dzięki za odpowiedź. Pytanie dotyczy zmiennych globalnych zdefiniowanych dla szablonów Twig! Czy można uzyskać do nich dostęp również w sterowniku, czy można ich używać tylko w szablonach Twig? – JeanValjean

+1

[Oficjalny przewodnik użytkownika Symfony] (http://symfony.com/doc/current/cookbook/templating/global_variables.html) stwierdza, że ​​można użyć pliku _parameters.ini_, ale nie odpowiada na moje pytanie. – JeanValjean

2

myślę, że lepiej używać parametrów konfiguracyjnych wiązka lub DIC do wartości, a następnie dodać go do globalnych gałązka (za pośrednictwem wiązki klasy rozszerzenia, na przykład), a nie stara się zrobić odwrotnie .

+1

Więc odpowiedź brzmi: "Nie, nie jest możliwe"? – JeanValjean

4

Właściwa praktyka to skorzystanie z oficjalnego samouczka dotyczącego zmiennych globalnych Twig w Symfony's Cookbook. W praktyce, należy zdefiniować zmienną globalną, które mogą być stosowane w kontrolerach np:

; app/config/parameters.ini 
    [parameters] 
    my_global_var: HiAll 

następnie zmienna jest zdefiniowana jako globalny dla szablonów Twig

# app/config/config.yml 
twig: 
    globals: 
     my_var: %my_global_var% 

Stąd {{my_var}} powróci HiAll, ale należy zadbać o wartość raz w pliku parameters.ini.

Odpowiedź na to pytanie brzmi: nie! Lub dokładnie, nie w skuteczny sposób. MDrollette rysowane możliwe!

+0

Jestem bardziej za to rozwiązanie, ponieważ pozwala również wprowadzić param do klas świadomości pojemnik.Parametr można jeszcze zdefiniować bezpośrednio w pliku config.yml –