tal:attributes

Mit tal:attributes können HTML Attribute gesetzt oder verändert werden.

<a href="http://www.foo.com" title="some foo link"
   tal:attributes="href somelink/href; title somelink/title"
  tal:content="somelink/text"
>sample link</a>

Wobei 'somelink' aus folgendem besteht:

$somelink->href = "http://www.google.com";
$somelink->title = "google search engine";
$somelink->text = "the google search engine";

Ergibt:

<a href="http://www.google.com"
title="google search engine">the google search engine</a>

Das Semikolon (;) trennt einzelne Attribute. Möchten Sie ein Semikolon ausgeben, so müssen Sie es verdoppeln (;;).

Ein etwas komplexeres Beispiel zu tal:repeat:

<tr tal:repeat="ranking playerRankings"
    tal:attributes="class php: repeat.ranking.odd ? 'odd' : NULL"></tr>

Der php: Operator wird später genauer erklärt werden. Hier wird, wenn die Zeilennummer ungerade ist, tr ein class Attribut mit 'odd' als Wert zugewiesen sonst wird kein class Attribut gesetzt.

"condition ? then : else" ist ein normales PHP Konstrukt, daß vorsichtig verwendet werden muß, sich aber in mehr als einer Situation als nützlich erweist.

Ein besserer Weg um dasselbe Ergebnis zu erhalten ist es, den PHP Programmierer um einen maßgeschneiderten Operator zu bitten (siehe PHP Integration / maßgeschneiderte Operatoren), der dann wie folgt genutzt wird:

<tr tal:repeat="ranking playerRankings"
    tal:attributes="class css-odd:repeat/ranking/odd"></tr>

Der Operator sollte "odd" zurückgeben, wenn repeat/ranking/odd wahr ist, sonst NULL.

Optionale Attribute

Verwenden Sie in tal:attributes TALES-Alternativen (die a|b|c Notation) und ist nothing (oder NULL in PHP) die letzte der Alternativen, wird das Attribut gar nicht ausgegeben wenn kein Wert dafür vorhanden ist. (Hierdurch werden leere Attribute vermieden.):

… tal:attributes="title object/tooltip | nothing"> 

XHTML-Attribute wie selected, checked usw. werden automatisch richtig verwendet.

<input type="checkbox" tal:attributes="checked object/isChecked"/>

Warnung

Beachten Sie, daß XHTML Groß- und Kleinschreibung unterscheidet. SELECTED ist in XHTML ein Fehler. Verwenden Sie selected.