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
.
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"/>
Beachten Sie, daß XHTML Groß- und Kleinschreibung unterscheidet. SELECTED
ist in XHTML ein Fehler. Verwenden Sie selected
.