Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][PHP]include w szablonie twig
q3d
post 4.07.2019, 13:20:04
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


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

Ten post edytował q3d 4.07.2019, 13:20:40
Go to the top of the page
+Quote Post
nospor
post 4.07.2019, 13:44:54
Post #2





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6290
Dołączył: 27.12.2004




No roznica jest w rezultacie koncowym. Moze napisz co tak wlasciwie chcesz osiagnac?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
q3d
post 4.07.2019, 16:32:12
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 7
Dołączył: 10.01.2006

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


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ę.
Go to the top of the page
+Quote Post
YourFrog
post 5.07.2019, 15:13:27
Post #4





Grupa: Zarejestrowani
Postów: 124
Pomógł: 22
Dołączył: 10.01.2014

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


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
Go to the top of the page
+Quote Post

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: 29.03.2024 - 02:27