PHPTAL enthält einige grundlegende Operatoren: „not:“, „exists:“, „string:“, „php:“, „path:“.
Diese Operatoren sind in den ZPT-Spezifikationen definiert. PHPTALES kann mit eigenen Operatoren zur Bearbeitung von Zeichenketten, Kalenderdaten, Währungen, oder was auch immer erweitert werden.
Ziel der Anwendung jedweden Operators ist es, ein Stückchen PHP-Code zurückzugeben, der in den aus der Vorlage generierte PHP-Code integriert wird.
Operatoren werden während der Vorlagenzerlegung angewendet. Wenn Sie das Verhalten eines Operators verändern, müssen Sie alle vorher erzeugten PHP-Dateien löschen und die Vorlagen neu zerlegen lassen.
Beachten Sie, daß Operatoren Code und keine Daten ausgeben!
Jede PHP-Funktion, die mit "phptal_tales_
" beginnt, definiert einen Operator.
Operatoren erwarten zwei Argumente::
$src
: die Quellzeichenkette nach dem "modifier:" Schlüsselwort
$nothrow
: eine boolsche Variable, die entscheidet ob durch die phptal_path()
Auflösung eine Ausnahme ausgeworfen werden soll. Diese Variable muß immer an innerhalb Ihres eigenen Operators aufgerufene weitere phptal_tales_
-Operatoren durchgereicht werden.*
For example, in the following TAL template,
<span tal:replace="some-modifier: my/path/value"/>
The src argument will be "my/path/value
", and the $nothrow
boolean will be false, because tal:replace
requires the path to be fully resolvable.
Ein Ausdruck wie:
<span tal:replace="some-modifier: my/path/value | other/path"/>
nutzt zwei Operatoren:
some-modifier: with "my/path/value
" as $src
argument and $nothrow
set to true because an alternative exists
path: with "other/path
" as $src
, and $nothrow
set to false because in case the alternative is not found, tal:replace
will be in trouble.
Zur Erinnerung: path:
wird implizit verwendet, sollte kein anderer Operator angegeben sein.
Operatoren können andere Operatoren verwenden, um einfacheren PHP-Code zu erhalten; siehe das folgende Beispiel:
//
// This modifier will return a money formated string (XXX.XX)
//
// usage:
//
// money: path/to/my/amount
//
// this modifier uses phptal_tales() function to generate the
// PHP code that will return the value of the modifier argument.
//
// in the example:
//
// money: path/to/my/amount
//
// the produced code will be something looking like:
//
// sprintf("%01.2f", phptal_path($ctx->path, "to/my/amount"))
//
// This code will be included right into the template where needed.
//
// @param string $src
// The expression string
// @param string $nothrow
// A boolean indicating if exceptions may be throw by phptal_path if
// the path does not exists.
// @return string
// PHP code to include in the template
//
function phptal_tales_money( $src, $nothrow )
{
// remove spaces we do not require here
$src = trim($src);
return 'sprintf("%01.2f", '.phptal_tales($src, $nothrow).')';
}