Symfony2 - MVC - Jak przekazać obiekt do layoutu

Symfony2 - MVC - Jak przekazać obiekt do layoutu
PS
  • Rejestracja: dni
  • Ostatnio: dni
0

Cześć,

Przepraszam, że tak enigmatycznie trochę zagaiłem w temacie posta ale nie umiałem inaczej.

Problem najprawdopodobniej jest znany ale nie wiem czy powinien znajdować się w kategorii NEWBIE. Chodzi mi o to, że chce zrobić rozszerzalne/dynamiczne menu i chciałem abym mógł generować je w każdym widoku. Nie chce powielać tej operacji wszędzie i jakoś przekazać obiekt do widoku/layoutu i tam stworzyć menu. Niestety w tym silniku twig nie bardzo wiem jak to zrobić, czytałem trochę dokumentacji ale nic to nie dało :/ tzn nic nie znalazłem :). Być może za szybko to przeleciałem, w każdym razie prośba o podpowiedź. Mam wrażenie, że problem jest raczej już znany.

PS
  • Rejestracja: dni
  • Ostatnio: dni
0

Sorki , jeszcze nie zdążyłem :) ( popełniłem błąd sorkas ) odpisać.

Chodziło mi o to że wyciągam sobie z bazy dane o polach menu i chciałbym żeby były widoczne nie zależnie od controlera, chciałem umieścić np w layoucie. Dowiedziałem się, że można coś takiego zrobić za pomocą globalnych zmiennych, które jak widać mogą być referencją do obiektów, wtedy są widoczne we wszystkich template'ach. W silniku twig robi się to tak

Kopiuj
$twig = new Twig_Environment($loader);
$twig->addGlobal('text', new Text());

a teraz pod tym linkiem znajduję się implementacja

http://symfony.com/doc/current/reference/dic_tags.html#reference-dic-tags-twig-extension

kchteam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tychy
  • Postów: 155
1

Napisz sobie własne rozszerzenie do twiga, nadpisz metodę getGlobals.
Następnie zarejestruj rozszerzenie jako serwis i możesz korzystać ze zmiennej globalnej w twig-u.

Coś jak poniżej:

Kopiuj
public function getGlobals()
{
	return array(
		'menu' => array('element1', 'element2')
	);
}

Więcej szczegółów tutaj:
http://symfony.com/doc/current/cookbook/templating/twig_extension.html

[Adrian]

PK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
PS
  • Rejestracja: dni
  • Ostatnio: dni
0

kchteam, właśnie tak to zrobiłem, ale dzięki zajrzałem tu niestety dopiero teraz

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.