phptal:tales
This attribute allows us to change the behavior of
PHPTALES. The default behaviors is to interpret attribute expressions in a very
ZPT way. But sometimes you just would like to have
PHP there, and you end up using
php: modifier everywhere.
Another problem concerning
PHPTALES is the way
PHPTAL has to interpret paths. For example,
myobject/mymethod/property/10/othermethod/hashkey takes relatively long to interpret (but don't worry about this too much – don't optimize until you find that it is
really a problem with performance!)
PHPTAL has (at runtime) to take myobject and discover that it is an object; find out that '
mymethod' is a method of this object (rather than a variable), and then to call it; explore the result to determine that it is an object with a property; find that its value is an array; find the '
ten' element of this array, and determine that it is an object; decide that
othermethod is a method of this object (rather than a variable), and get the result of its execution; find that it is an object, and then retrieve the value for the key '
hashkey'.
Of course this was an extreme example and most of the time we don't care, because the process is fast enough. But what if this very long path is called inside a big
tal:repeat? D'oh!
phptal:tales can help us here:
<html><body><table phptal:tales="php"><tr tal:repeat="myobject document.getChildren()"><td tal:content="myobject.mymethod().property[10].otherMethod().hashkey"></td></tr></table></body></html>
Please note that the above example does the same as:
<html><body><table><tr tal:repeat="myobject php:document.getChildren()"><td tal:content="php:myobject.mymethod().property[10].otherMethod().hashkey"></td></tr></table></body></html>
php: modifier is explained in its
own chapter.