Symfony2 - MVC - Jak przekazać obiekt do layoutu

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.

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

$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

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:

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]

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1