Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SF2][Symfony] dostęp do danych w twigu
Foxx
post 11.05.2013, 02:18:41
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


Załóżmy, że mamy tablicę obiektów "Pytanie" przekazaną do szablonu twig. Wyświetlamy sobie te pytania:

  1. {% for pytanie in pytania %}
  2. {{ pytanie.nazwa }}
  3. {% endfor %}


I teraz załóżmy, że każde pytanie może mieć powiązany obiekt "Odpowiedź" w relacji OneToMany (jedno pytanie może mieć wiele odpowiedzi - od różnych userów).

Pytanie: w jaki sposób mogę wyświetlić przy każdym z pytań odpowiedź, która jest do niego przypięta i która ponadto należy do wybranego usera? Czyli nie po prostu odpowiedź należącą do tego pytania, ale dodatkowo, która ma parametr userId = np. 5.

Moje próby:

1. Najprościej byłoby w kontrolerze po prostu pobrać odpowiedzi do każdego z pytań skoro pobieram tam pytania. Problem w tym, że ja nie pobieram pytań w kontrolerze. W kontrolerze pobieram tylko "Karty", a w twigu pętlą pobieram wszystkie "Grupy" każdej z kart i kolejną pętlą pobieram dopiero wszystkie "Pytania" każdej grupy. Czyli nie bardzo mogę pobrać odpowiedzi bo nie dysponuję pytaniami w kontrolerze.

2. Próbowalem to zrobić przy pomocy renderowania kontrolera w twigu. Napisałem metodę, która zwraca mi odpowiedź, ale problemem jest to, że w ten sposób renderuję jakiś template w twigu i tyle. A ja potrzebuję uzyskać dostęp do tej zmiennej i móc ją użyć kilka razy w moim szablonie.

Inaczej moje pytanie można sformułować tak: jak mogę uzyskać w twigu dostęp do obiektu powiązanego z obiektem, który tam już mam, ale mogąc jednocześnie wykonać trochę bardziej złożone filtrowanie na tych powiązanych obiektach.

Dzięki za wszelkie rady.

EDIT:

Rozwiązałem problem, ale nie jestem zadowolony. W kontrolerze zrobiłem podwójnego foreacha, analogicznego do tego, który robię w twigu żeby wyświetlić pytania. I w tym foreachu tworzę tablicę z odpowedziami gdzie kluczami są identyfikatory pytań. Podaję tą tablicę do twiga no i mogę sobie jej użyć. Nie jestem zadowolony bo dwa razy robię tą samą pętlę. Nie bardzo mogę wyeliminować pętlę w twigu bo bardzo wygodnie wyświetla mi się w ten sposób pytania uporządkowane w grupach.

Ten post edytował Foxx 11.05.2013, 02:34:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post 11.05.2013, 15:06:57
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@destroyerr: Założyłem po prostu, że najprawdopodobniej autora interesuje jedynie mały fragment potencjalnie dużej kolekcji odpowiedzi na dane pytanie (filtrowanie wg użytkownika). Innymi słowy, dokładnie to co podlinkowałeś z dokumentacji Doctrine.

@Foxx: Encja powinna ograniczyć się do względnie prostych metod operujących wyłącznie w obrębie grafu relacji encji. Powinieneś raczej utworzyć metodę w repozytorium, która jako argument przyjmuje encję i zwraca jakieś wyniki - absolutnie nic nie stoi na przeszkodzie byś w Twigu korzystał z obiektu repozytorium. Ba! Jest to prawidłowe rozwiązanie z punktu widzenia MVC! smile.gif
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 19:16