tal:define

Dieses Attribut definiert eine oder mehrere Variablen, die im weiteren Verlauf in der Vorlage verwendet werden können.

Es können eine oder mehrere durch Semikolon getrennte Variablen angegeben werden.

Definition eines Kürzels für einen langen Pfad:

<span tal:define="global destname pfad/zu/einer/Variable"></div>

Mehrere Variablen zugleich definieren:

<span tal:define="global vname string:Hans; nname string:Meier"></span>

Beginnt eine Definition mit global Schlüsselwort ist die Variable dannach überall in der Vorlage und in allen Makros sichtbar. Eine globale Variablen darf später in der Vorlage auch neu definiert werden.

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

Im Gegensatz dazu ist eine lokale Variable nur innerhalb der Auszeichnung sichtbar, in der Sie definiert ist.

<span tal:define="hello string:Hallo Welt"/>
            <p tal:content="hello"/>
            

Dieser Code liefert einen 'undefined variable'-Fehler.

Tipp

Sie können tal:define auch zusammen mit anderen Attributen verwenden. Es wird in jedem Fall vor allen anderen Attributen ausgewertet.

Definition einer Zeichenkette innerhalb einer Vorlage:

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

Defining a string containing another variable:

<span tal:define="fname string:Paul; hello string:Hello $fname! Welcome to this page" />
            

Definition einer Zeichenkette, die eine weitere Variable enthält:

<span tal:define="global hello string:Hallo $fname, willkommen auf dieser Seite" />

Ein kleiner Trick, der den Inhalt einer Auszeichnung verwendet (für sehr komplexe Werte hilfreich):

<span tal:define="global hello">Hallo ${fname}, willkommen auf dieser Seite</span>

Anmerkung

Dieser Spezialfall funktioniert nur bei Verwendung des global Schlüsselwortes.

In obigen Beispielen wird die <span>-Auszeichnung in der Ausgabe nicht auftauchen, da sie weder druckbaren Inhalt noch Attribute enthält. Selbst die Meldung im letzten Beispiel wird nicht erscheinen. Sie wird von der Variablen hello geschluckt.

Andererseits wird durch

<span tal:define="hello string:Hallo ${fname}, willkommen auf dieser Seite" tal:content="hello" />

sowohl die Variable hello gesetzt, als auch der Text ausgegeben.

Der folgende Code aber ist nicht erlaubt, da tal:define der Variablen »hello« den Inhalt des Knotens zuweist. Der Inhalt des Knotens ist allerdings zu diesem Zeitpunkt noch unklar, da tal:content ihn erst später festlegt. Der tatsächliche Inhalt wird dabei wie Beispielinhalt ignoriert. hello wird nicht definiert, und Sie erhalten eine Fehlermeldung.

<span tal:define="hello" tal:content="hello">
              Hallo ${fname}, willkommen auf dieser Seite
            </span>