Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][SF2][Symfony2]Jak do głównego szablonu pobrać dane z bazy danych?
Crash89
post
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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


Chciałbym w Symfony pobrać dane z bazy danych i wstawić je do głównego szablonu (layoutu),
przeczytałem dokumentację na ten temat, ale tam nie ma nic o pobraniu danych z bazy, spotkał się już ktoś z czymś takim?
http://symfony.com/doc/current/templating/..._variables.html

Ten post edytował Crash89 16.10.2016, 16:34:04
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
kpt_lucek
post
Post #2





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


Co to za dane i dlaczego chcesz je wstawić bezpośrednio w templatkę?
Go to the top of the page
+Quote Post
ohm
post
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 144
Dołączył: 22.12.2010

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


https://symfony.com/doc/current/templating/..._extension.html - tworzysz nową funkcje dla twiga i wrzucasz w dowolnym miejscu w szablonie.
Go to the top of the page
+Quote Post
Crash89
post
Post #4





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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


Cytat(kpt_lucek @ 16.10.2016, 17:39:51 ) *
Co to za dane i dlaczego chcesz je wstawić bezpośrednio w templatkę?



W layoucie mam menu rozwijane, i tam chcę wstawić wszystkie kategorie, żeby po wybraniu kategorii przenosiło użytkownika na wszystkie elementy w danej, wybranej przez niego kategorii.
Ręcznie tego wstawiać, nie ma sensu, bo w panelu admina ktoś może sobie usunąć lub wstawić nową kategorię i się wszystko wysypie.
Go to the top of the page
+Quote Post
kpt_lucek
post
Post #5





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


A może TO?
Go to the top of the page
+Quote Post
Crash89
post
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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


Cytat(kpt_lucek @ 16.10.2016, 19:55:42 ) *
A może TO?


Nie, tutaj raczej ciężko zrobić menu rozwijalne, a takie chcę zrobić.
Mam już gotowy kod do tego w javascripcie, tylko chcę podstawić tam linki.

Ten post edytował Crash89 16.10.2016, 20:07:34
Go to the top of the page
+Quote Post
kpt_lucek
post
Post #7





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


Czy ciężko, to nie wiem

W praktyce możesz coś takiego osiągnąć poprzez wstrzyknięcie serwisu do globali i potem odwoływać się do niego po dane, tak jak tutaj
  1. {% set param = mojSerwis.pobierzLink(jakisParametr) %}
  2. <a href="{{ param.url }}">{{ param.label }}</a>


Ten post edytował kpt_lucek 16.10.2016, 20:36:37
Go to the top of the page
+Quote Post
Pilsener
post
Post #8





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1. Czemu nie zrobisz menu we frameworku/jakimś bundlu do tego?
2. Podejście z postu wyżej jest dobre, ale wtedy gdy chcemy wyświetlić jakiś statyczny parametr (typu środowisko czy nazwę bazy danych).
3. Zazwyczaj w aplikacjach symfonowych kontroler zwraca tablicę parametrów, które są przekazywane do warstwy widoku. Trzeba przechwycić zdarzenie "onKernelView" i podpiąć się pod obiekt "GetResponseForControllerResultEvent", modyfikując wysyłaną do widoku tablicę (w tym wypadku dodać do niej odpowiednie parametry). Oczywiście trzeba to dobrze okodować, żeby nie było problemów z konfliktem parametrów globalnych z lokalnymi. Szczegóły implementacji zależą od wersji frameworka.
Go to the top of the page
+Quote Post
Crash89
post
Post #9





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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


Jednak spróbuję z tym KnpMenuBundle, może być jednak problem z umieszczeniem odpowiednich klas w html.
Ten cały kod menu jaki mam, jest napisany pod bootstrapa i musi mieć odpowiednią hierarchę klas do cssa.
Go to the top of the page
+Quote Post
kpt_lucek
post
Post #10





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


Cytat(Crash89 @ 17.10.2016, 21:47:55 ) *
Jednak spróbuję z tym KnpMenuBundle, może być jednak problem z umieszczeniem odpowiednich klas w html.
Ten cały kod menu jaki mam, jest napisany pod bootstrapa i musi mieć odpowiednią hierarchę klas do cssa.

Też się kiedyś z tym męczyłem i powiem Ci... da się i to bez modyfikacji templatki, tylko budując to odpowiednio przez załączony factory (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Pilsener
post
Post #11





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Co za problem podmienić templatkę menu np. na taką:
https://gist.github.com/nateevans/9958390
?
Albo znaleźć odpowiednie menu (bundli do symfony jest obfitość), albo samemu zrobić templatkę (godzina albo dwie pracy).
Można też nic nie zmieniać tylko dodać pare reguł CSS.
Go to the top of the page
+Quote Post
Crash89
post
Post #12





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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




Cytat(Pilsener @ 18.10.2016, 09:12:28 ) *
Co za problem podmienić templatkę menu np. na taką:
https://gist.github.com/nateevans/9958390
?
Albo znaleźć odpowiednie menu (bundli do symfony jest obfitość), albo samemu zrobić templatkę (godzina albo dwie pracy).
Można też nic nie zmieniać tylko dodać pare reguł CSS.


Mam już klasy css do tego, ogólnie to wygląda tak w htmlu:
  1. <div class="col-sm-8 h_menu4">
  2. <ul class="memenu skyblue">
  3. <li class=" grid"><a href="{{ path('homepage') }}">Home</a></li>
  4. <li><a href="{{ path('product_show_category', { 'category' : 1 }) }}">Wool</a>
  5. <div class="mepanel">
  6. <div class="row">
  7. <div class="col1">
  8. <div class="h_nav">
  9. <h4>All Clothing</h4>
  10. <ul>
  11. <li><a href="products.html">Shirts</a></li>
  12. <li><a href="products.html">Sports Wear</a></li>
  13. </ul>
  14. </div>
  15. </div>
  16. <div class="col1">
  17. <div class="h_nav">
  18. <h4>Footwear</h4>
  19. <ul>
  20. <li><a href="products.html">Formal Shoes</a></li>
  21. <li><a href="products.html">Boots</a></li>
  22.  
  23.  
  24. </ul>
  25. </div>
  26. </div>
  27. <div class="col1">
  28. <div class="h_nav">
  29. <h4>Popular Brands</h4>
  30. <ul>
  31. <li><a href="products.html">Levis</a></li>
  32. <li><a href="products.html">Persol</a></li>
  33. </ul>
  34. </div>
  35. </div>
  36. </div>
  37. </div>
  38. </li>
  39. <li class="grid"><a href="#">Accesories</a>
  40. <div class="mepanel">
  41. <div class="row">
  42. <div class="col1">
  43. <div class="h_nav">
  44. <h4>All Clothing</h4>
  45. <ul>
  46. <li><a href="products.html">Shirts & Tops</a></li>
  47. <li><a href="products.html">Sports Wear</a></li>
  48. </ul>
  49. </div>
  50. </div>
  51. <div class="col1">
  52. <div class="h_nav">
  53. <h4>Footwear</h4>
  54. <ul>
  55. <li><a href="products.html">Heels</a></li>
  56. <li><a href="products.html">Flats</a></li>
  57. </ul>
  58. </div>
  59. </div>
  60. <div class="col1">
  61. <div class="h_nav">
  62. <h4>Popular Brands</h4>
  63. <ul>
  64. <li><a href="products.html">Levis</a></li>
  65. <li><a href="products.html">Persol</a></li>
  66. </ul>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. </li>
  72. <li><a href="typo.html">Blog</a></li>
  73. <li><a class="color6" href="contact.html">Contact</a></li>
  74. {% if is_granted('ROLE_ADMIN') %}
  75. <li><a class="color6" href="{{ path('sonata_admin_dashboard') }}" >Admin panel</a></li>
  76. {% endif %}
  77. </ul>
  78. </div>


Tak wygląda kod w htmlu, i taki muszę zbudować w knpMenu. Nie ruszając szablonu (Bo jest bardzo skomplikowana) Da się wstawić divy w takiej hierarchii w Builderze, czy to już tylko w KnpMenuBuilder.html.twig?

Ten post edytował Crash89 18.10.2016, 13:27:36
Go to the top of the page
+Quote Post
kpt_lucek
post
Post #13





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


Możesz to jak najbardziej zrobić przez KNP, pewnie będzie to wymagało lekkiej zmiany templatki, ale mimo wszystko ograsz to "gotowcem" i bez nadmiernego kombinowania.
Go to the top of the page
+Quote Post
Crash89
post
Post #14





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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


To będzie moje ostatnie chyba pytanie.
Co zrobić żeby dodane divy otaczały tylko listę wygenerowaną przez tą linijkę w Builderze:
  1. $menu['Item']->addChild($item->getName(), array('uri' => '#'));


Przeszukałem cały plik Knp_menu.html.twig i udało mi się osiągnąć prawie zamierzony efekt, ale moje divy otaczały także linijki z buildera:
  1. $menu->addChild(...)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 15:32