Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Sesja w twigu
Forum PHP.pl > Forum > PHP > Frameworki
usb2.0
Witam,
otóż mam takie pytanie, na które niby znalazłem odpowiedź ale niepotrafie tego chyba wykorzystać

Powiedzmy że dodaje sobie do sesji coś, nie ważne co, grunt żeby w niej było, nawet zwykłe stringi
i chciałbym w widoku - twigu jakiejś akcji, wyświetlić te wszystkie dane z sesji
no i dowiedziałem się o app.session, które chyba poniekąd jest rozwiązaniem, ale totalnie nie wiem dobrać się do konkretnych danych.
Ewentualnie jakimś forem to wszystko z sesji wyświetlić może?
Pozdrawiam.

a no wiem że można wyświetlić konretną wartość korzystająć pisząć {{ app.session.get(key) }}, ale ja chce wszystkie -.-


znalazłem rozwiązanie jeśli może ktoś by był zainteresowany

w kontrolerze
$session = $this->getRequest()->getSession()
return array('session' => $session);

w twigu

{% for item in session.all %}

{{ app.session.get(item) }}

{% endfor %}
l3l0
No witam,

Albo tak:

  1. $session = $this->getRequest()->getSession();
  2. return array('sessions' => $session->all());


  1. {% for item in sessions %}
  2. {{ item }}
  3. {% endfor %}


albo tak (chyba lepsza opcja):

  1. {% for item in app.session.all %}
  2. {{ item }}
  3. {% endfor %}


Pozdrawiam l3l0
usb2.0
z kontynuując temat twiga,

dajmy na to że mam w sesji slugi do konkretnych produktow, no i w koszyku jak chciałbym wyświetlić oczywiście nazwe produktu cene etc
jak sobie z tym poradzić?
da się jakoś w twigu pisać funkcje które obsłużą ORM i zwrócą konkretne dane, coś w stylu
{{ getPrice( slug ) }}
poszukałbym w dokumentacji, ale niestety takowej w tym temacie brakuje -.-

toffiak
To nie jest zadanie dla twiga, mając dane o produktach pobierz je i za pomocą kontrolera przekaż je do widoku.
usb2.0
no zrobiłem to jakoś tak, ale to chyba nie jest dobre rozwiązanie, no pomijając fakt że działa
  1. $session = $this->getRequest()->getSession();
  2. $results = array();
  3. foreach( $session->all() as $item )
  4. {
  5. $repository = $this->getDoctrine()->getRepository('product');
  6. $Query = $repository->createQueryBuilder('a')
  7. ->where("a.slug = :slug")
  8. ->setParameter('slug', $item)
  9. ->getQuery();
  10. $result = $Query->getResult();
  11. array_push($results, $result);
  12. }
  13.  
  14. return array('results' =>$results);
toffiak
Lepiej by było stworzyć własną metodę w repozytorium o nazwie na przykład getAllBySlugs() gdzie podawałbyć tablicę ze slugami a w odpowiedzi metoda zwracałaby pasujące obiekty.

Metoda powinna pobierać pasujące rekordy w jednym zapytaniu, wszystkie na raz, wykorzystaj where in.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.