Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2]Dynamiczne wyświetlanie zawartości obiektów w TWIG
Forum PHP.pl > Forum > PHP > Frameworki
Geniesis
Witam ponownie,
niestety napotkałem na następujący problem i szukam najlepszego rozwiązania:

Pobieram dane z bazy danych i chcę je wyświetlić w twig template, metoda jest uniwersalna - w zależności od podanej przez użytkownika nazwy zostanie wybrana z bazy danych inna tabela:
  1.  
  2. public function addAction(Request $request, $nameAction)
  3. {
  4. $em = $this->getDoctrine()->getManager();
  5. switch ($nameAction) {
  6. case 'categories':
  7. $tableName = 'Categories';
  8. $objEntity = new Categories();
  9. break;
  10. ...
  11. }
  12. $query = $em->createQuery(
  13. "SELECT d
  14. FROM CoreBundle:$tableName d
  15. "
  16. );
  17. $aDbData = $query->getResult();
  18.  
  19. return array(
  20. 'aDbData' => $aDbData,
  21. );
  22. }
  23.  


W systemie template mogę odnieść się w ten sposób:
  1. {% for i, objData in aDbData %}
  2. {{ objData.id }}
  3. {% endfor %}

jednakże nie wiem jaka faktycznie jest zawartość tabeli, która została wybrana, więc owo statyczne rozwiązanie nie ma prawa bytu,
dlatego postanowiłem użyć dodatkowej pętli, niestety nie wyświetla nic:
  1. {% for i, objData in aDbData %}
  2. {% for j in objData %}
  3. {{ j }}
  4. {% endfor %}
  5. {% endfor %}


Czy wiecie jak można bezpośrednio odnieść się do owych danych?

W teorii można dopisać w PHP funkcję, która będzie pobierać nazwy, po czym owe dane dosyłać w kolejnej tablicy - zmiennej, jednak wydaje mi się to niezsensowne (dochodzi wtedy także zabawa z uzyskiwaniem dostępu do 'private' przed przekazaniem do tablicy).
kpt_lucek
W Twigu masz funkcje blokowe
  1. {% block thead %}
  2. <th class="some-class">{{col}}</th>
  3. {%endblock%}
  4.  
  5. <tr>
  6. {% for columns in someArray|keys %}
  7. {{ block('thead') }}
  8. {%endfor%}
  9. </tr>


Jakoś tak to szło, jeżeli dobrze pamiętam
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.