Variablen definieren
Variablen definieren
Das Beispiel-Template wird immer mindestens eine Zeile
anzeigen, da das Template selbst eines der aufgelisteten Objekte
ist. Unter anderen Umständen will man vielleicht eine spezielle
Behandlung für die Möglichkeit einführen, daß die Tabelle leer
ist. Angenommen, die Tabelle soll überhaupt nicht angezeigt
werden, falls sie leer ist. Dies kann dadurch erreicht werden,
daß die ’tal:condition’-Anweisung zur Tabelle
hinzugefügt wird.
<table border=“1“ width=“100%“
tal:condition=“container/objectValues“>
Sollte keine Objekte vorhanden sein, so wird kein Teil der
Tabelle mit ausgegeben. Sind Objekte vorhanden, dann wird der
Ausdruck ’container/objectValues’ zweimal
ausgewertet. Dies ist etwas ineffizient. Ebenso muß man darauf
achten, daß im Falle einer Änderung des Ausdrucks der Ausdruck an
beiden Stellen im Code geändert werden muß.
Um dieses Problem zu vermeiden, kann eine Variable deklariert
werden, die den Inhalt der Liste enthält. Die Variable kann dann
sowohl in ’tal:condition’ als auch in
’tal:repeat’ verwendet werden. Wir verändern die
ersten paar Zeilen wie folgt:
<table border =“1= width=“100%“ tal:define=“items
container/objectValues“ tal:condition=“items“>
<tr>
<th>#</th><th>Id</th><th>Meta
Typ</th><th>Titel</th>
</tr>
<tbody tal:repeat=”item items”>
…
Die ’tal:define’-Anweisung erzeugt die Variable
’items’, die innerhalb des gesamten
<table>-Tags verwendet werden kann. Beachten
Sie auch, daß man sehr wohl zwei TAL-Attribute in einem
Tag verwenden kann. Tatsächlich kann man so viele verwenden wie
man will. Sie werden der Reihe nach ausgewertet. Zum Beispiel
deklariert das erste Attribut eine Variable und weist ihr einen
Wert zu, das zweite Attribute wertet die Variable in einer
Bedingung aus und prüft auf wahr oder falsch.
Nehmen wir nun an, daß wir anstatt die leere Tabelle einfach auszulassen eine Meldung ausgeben wollen. Um das zu tun, schreiben wir folgendes über die Tabelle:
<h4 tal:condition=“not:container/objectValues”>Es
gibt keine Einzelposten</h4>
Die ’items’-Variable kann hier nicht verwendet
werden, da Sie noch gar nicht definiert ist. Wird die
Variablendeklaration in das <h4>-Tag
verlagert, so kann es in der Tabelle nicht mehr verwendet werden,
da es dann eine lokale Variable für das
<h4>-Tag ist. Man kann die Definition in ein
Tag einschließen, welches sowohl die Überschrift als auch die
Tabelle klammert, aber es gibt eine einfachere Lösung. Durch das
Voranstellen des Schlüsselworts ’global’ vor den
Variablennamen erlangt die Variable Gültigkeit ab der Deklaration
bis zum Ende des Templates. Ein Beispiel:
<h4 tal:define=“global items container/objectValues”
tal:condition=”not:items”>
There Are No Items
</h4>
<table border=”1” width=”100%”
tal:condition=”items”>
…
</table>
Das ’not:’ in der ersten
’tal:condition’-Anweisung ist ein Präfix, das jedem
Ausdruck vorangestellt werden kann. Ist der Ausdruck wahr, dann
ist ’not:’ falsch und umgekehrt.






