2010-12-17 8 views

Odpowiedz

6

Są one trochę odwrotne względem siebie.

doLayout jest używany jako część tagu extends. Tag extends określa, który szablon chcesz rozszerzyć, a tag doLayout określa, gdzie w rozszerzonym szablonie wstrzyknięty jest twój kod.

Znacznik include po prostu określa, że ​​należy wtrysnąć inny szablon w określonym punkcie.

Tak, doLayout działa w podobny sposób, z wyjątkiem tagu doLayout, który nie określa, który szablon jest wstrzykiwany. Odbywa się to za pomocą znacznika extends i oznacza, że ​​szablon (który zwykle zawiera nagłówki, stopki i typowe css i javascript), może zostać rozszerzony bez potrzeby posiadania informacji o szablonie, który je rozszerza.

Include, to głupi zastrzyk kodu.

Jeśli chciałeś osiągnąć funkcjonalność doLayout ze zawiera (i to jest sposób, by to zrobić w PHP lub coś podobnego), można zrobić

#{include 'header.html'} 
your template code 
#{include 'footer.html'} 

Miałoby to być replikowane na każdej stronie w twoim szablonie. Natomiast przy użyciu extends i doLayout pozwala po prostu zrobić

#{extends 'template.html'} 

i gdzie Twój kod jest wtryskiwany do template.html jest zarządzany przez tag doLayout.

Podejście rozciągające jest po prostu bardziej eleganckim sposobem. Ponadto, jeśli zdecydujesz się zmienić układ strony, musisz tylko zaktualizować jeden plik i zapewnić większą elastyczność w miejscu, w którym znajduje się zawartość wewnątrz rozszerzonego szablonu.

4

Z google-group zauważyłem różnice między extends (doLayout), include and a tag:

przedłużyć i to są podobne, różnica jest głównie w sposób, który przekazywaniu zmiennych

Z przedłużyć, szablon rodzic dostarcza boilerplate , a szablon dziecka zapewnia "ciało". Na przykład szablon nadrzędny może renderować nagłówek i stopkę , a szablon podrzędny może renderować główną treść strony. Zazwyczaj zestaw zmiennych w szablonie dzieci, które są odczytywane i zastosowane w szablonie np rodzic #{set title:'Pet shop' /} lub #{set showLoginBox:true /}

użyć to kiedy chcesz zrobić to samo wiele razy w ciągu pojedynczego szablonu nadrzędnego. Na przykład: #{include 'formStatusFields.html' /} Zmienne w szablonie nadrzędnym są dostępne dla dołączonego szablonu.

Jeśli masz fragment kodu szablonu, który jest wykonywany z wielu różnych szablonów nadrzędnych, należy użyć znacznika. Możesz przekazać zmienne do tagu . np. #{button label:'Ok', id:'ok-button'}

Powiązane problemy