Manual

2.1 tal:define

Ten atrybut definiuje jedną lub więcej zmiennych, które mogą być użyte później w szablonie.

Tworzenie skrótu długiej ścieżki :

<span tal:define="global destname path/to/existing/variable" />

Tworzenie łańcucha znaków wewnątrz szablonu :

<span tal:define="global destname string:some string" />

Definiowanie więcej niż jednej zmiennej naraz :

<span tal:define="global fname string:paul; lname string:dupond" />

Definiowanie łancucha znaków zawierającego inną zmienną :

<span tal:define="global hello string:hello $fname welcome on this page" />

Mała sztuczka korzystająca z buforu wyjącia :

<span tal:define="global hello">hello ${fname} welcome on this page</span>

Możesz użyć tal:define razem z innymi atrybutami, będzie on wówczas wykonany przed nimi.

W powyższych przykładach tag span nie będzie wyświetlony ponieważ nie ma on żadnej zawartości. Nawet ostatni przykład nie wyświetli komunikatu ponieważ zmienna hello przechwyci go.

Z drugiej strony:

<span tal:define="hello string:hello ${fname} welcome on this page"
      tal:content="hello"
/>

Powyższy przykład zarówno ustawi zmienną hello oraz wyświetli ją.

<span tal:define="hello" tal:content="hello">
  hello ${fname} welcome on this page
</span>

W powyższych przykładach możesz użyć słowa global przed nazwami zmiennych. W PHPTAL można definiować zarówno zmienne globalne jak i lokalne.

Zmienna globalna jest widoczna w dowolnym węźle (elemencie) szablonu oraz w wywołanych makrach.

<span tal:define="global hello string:hello world"/>
<p tal:content="hello"/>

Zmienna lokalna jest widoczna tylko wewnątrz znacznika, w którym została zdefiniowana :

<span tal:define="hello string:hello world"/>
<p tal:content="hello"/> <!-- spowoduje pojawienie sie bledu niezdefiniowanej zmiennej -->