Symfony 3 zmienna globalna we wszystkich szablonach Twig

0

Witam,
Tworzę swój własny CMS oparty na silniku Symfony 3 i mam pewien problem z umieszczaniem zmiennej w szablonie Twig.

Cały szablon strony podzielony jest na składowe w których base.html.twig rozszerza poszczególne szablony podane w kontrolerach. Jednakże niektóre elementy tj site descryption dla meta czy URL logotypu przetrzymuje w bazie danych i przy wywołaniu kontrolera za pomocą Doctrine wyciągam te informacje a następnie normalnie w argumencie metody render przesyłam do szablonu.

Problem powstał gdy tych kontrolerów powstało mi dość sporo i za każdym razem muszę przesyłać to samo. Powstaje niepotrzebna redundancja kodu a całość jeszcze pogarsza fakt ze musiałem edytować kontrolery fos bundle aby także przesyłamy te informacje.

Da się to zrobić w sposób poprawny?

1

Nie robiłem dużo przy symfony, ale mam kilka porad

  1. Pobieraj dane za pomocą jakiegoś controller helpera (powinno byc cos do tego w symfony, jak nie to moze jakas forma dziedziczenia lub ew. trait lub service)
  2. Możesz zrobić jakiegoś viewhelpera - który będzie pobierał te dane za pomocą jakiegoś service'a
  3. Połącz obie lub wybierz którąś poradę i stosuj cache, bo podejrzewam że meta tagi i logo nie będą aktualizowane zbyt często.
0

No oczywiście dane pobieram za pomocą ORM przy użyciu własnych klas repozytorium ? (repository classes)
Głównie chodzi mi tutaj o wysłanie wyniku do szablonu.
Wydaje mi się ze symfony ma wbudowane mechanizmy cache, jak je obsłużyć?

1

Nie wiem jak wygląda sprawa z cache'm w SF3, ale co chodzi o widoki, to podejrzewam że gdzieś można na pewno skonfigurować zmienne, które będą ładowane do każdego widoku. No i proszę.... oto co znalazłem
http://symfony.com/doc/current/templating/global_variables.html - sekcja Referencing Services

0

Dla potomnych.
Odpowiedź do mojego pytania znalazła się tutaj.
Symfony docs

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