Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne][PHP]include w szablonie twig
Forum PHP.pl > Forum > Przedszkole
q3d
Czy jest różnica w wydajności, ewentualnie inna pomiędzy:

  1. {% for product in featured_products %}
  2. {% include 'antropy/template/extension/module/jetimpex_single_category_products_list.twig' %}
  3.  
  4. {%set option_index = option_index + 1 %}
  5. {% endfor %}


a wersją w której pętla for znajduje się wewnątrz includowanego pliku

  1. {% for product in featured_products %}
  2.  
  3. {%set option_index = option_index + 1 %}
  4. {% endfor %}


questionmark.gif
nospor
No roznica jest w rezultacie koncowym. Moze napisz co tak wlasciwie chcesz osiagnac?
q3d
W szablonie .twig prezentującym listę produktów dołączam szablon w którym jest struktura pojedynczego produktu.
I czy teraz jeżeli wewnątrz pętli {% for %} dam {% include %} to będzie x operacji odczytu z dysku a tym samym może to mieć wpływ na wydajność czy też jest to inaczej rozwiązane i nie ma to znaczenia?

Wygodniej (bo tak mi teraz działa) jest mi to zrobić includując wewnątrz pętli ale jeżeli to jest źle to przerobię.
YourFrog
Tak jak napisał nospor. Wszystko zależy co chcesz osiągnąć w podanym przez Ciebie przykładzie masz dwa różne końcowe rezultaty.


1. Jeżeli zrobisz szablon który obsługuje wygenerowanie pojedynczego elementu (z include wewnątrz foreach) to otrzymasz jakiś szablon który potrafi wygenerować TYLKO ten jeden element dzięki temu jest on bardziej elastyczny itp. Jeżeli wewnątrz używasz block'ów to już w ogóle.

2. Stworzenie szablonu który na wejściu przyjmuje kolekcje elementów i sama przez nie iteruje w celu wygenerowania widoku doprowadzi do stworzenia potworka który będziesz miał problem zarządzać.


Najczęściej lepiej jest stworzyć dwa szablony jeden do listy, a drugi do pojedynczego elementu listy dzięki temu masz separacje nawet na poziomie struktury plików i łatwiej się je reużywa. Dodatkowo taka rada oddemnie z doświadczenia wiem że lepiej jest zawsze jawnie przekazywać parametry przy include do szablonu, a na początku danego szablonu stworzyć sobie "docblock" który opisze jakie parametry można przekazać do danego szablonu. Często to zaoszczędzi Ci wiele czasu później na poszukiwaniu.

Tutaj masz przykład z FOSUserBundle symfony oni nawet "content" oddzielają od definicji "layout'u" na wypadek gdyby użytkownik chciał zrobić override tylko częsci.

https://github.com/FriendsOfSymfony/FOSUser...s/views/Profile
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.