Die Template Engine Smarty erlaubt es Werte zu berechnen. Besonders für Bestell- oder Rechnungsformulare kann diese Eigenschaft nützlich sein.
Zur einfacheren Darstellung werden Variablen im folgenden mit Namen wie $a, $b, $c ... in den Beispielen verwendet. ScarFormManager verarbeitet alle Variablen in einem Array mit Namen $sfm_field.archive_xx.
$a, $b oder $c müssten also durch $sfm_field.archive_1, $sfm_field.archive_2 oder $sfm_field.archive_3 ersetzt werden.
Möglichkeit 1
Die einfachen Rechenoperationen (Addition +, Subtraktion -, Multiplikation * und Division / ) können in der Variablenausgabe eingebunden werden. Es müssen die Variablen mit dem passenden mathematischen Formelzeichen verbunden werden.
Multiplikation:
{$a*$b}Division:
{$a/$b}Addition:
{$a+$b}Subtraktion:
{$a-$b}Im Beispiel wird das Ergebnis aus den Variablen wie angegeben berechnet. Wichtig ist, dass keine Leerzeichen enthalten sind, ansonsten kann es zu Fehlern während der Ausführung kommen.
Das Ergebnis wird direkt an der berechnenden Stelle ausgegeben.
Möglichkeit 2: Smarty Math
Die zweite deutlich umfangreichere Möglichkeit, ist der Einsatz von Math. Dadurch können duzende Variablen oder Zahlen für komplexere Formeln herangezogen werden.
Das folgende Beispiel zeigt das vollständig im Template-Umfeld:
{* Binden von Ziffern an Variablen *}
{assign var='a' value=111}
{assign var='b' value=222}
{assign var='c' value=333}
{assign var='d' value=444}
{* Einfache Ausgabe *}
a: {$a}
b: {$b}
c: {$c}
d: {$d}
{* Berechnen und Speichern in der Variable $x *}
{math equation="a + (b + c) * d" assign='x' a=$a b=$b c=$c d=$d}
{* Ergebnisausgabe, Variable $x *}
a + (b + c) * d = {$x}
{* Formatierte Ergebnisausgabe, Variable $x *}
a + (b + c) * d = {$x|number_format:"2":",":"."}Ergebnis:
# ohne Formatierung
a + (b + c) * d = 246531
# mit Formatierung (number_format)
a + (b + c) * d = 246.531,00Wird beim Einsatz von {math ..} kein assign='..' angegeben, wird das Ergebnis sofort ausgegeben.
Eine vollständige Beschreibung von Math befindet sich hier: http://www.smarty.net/manual/de/language.function.math.php
Hinweis
Berechnungen können nur mit Zahlen durchgeführt werden. Buchstaben können zu Fehlern führen.
Prüfen sie solche Felder durch einen Regulären Ausdruck auf Ziffern und Punkte.
Eine Korrekte Zahl muss mindestens eine Ziffer und darf maximal einen Punkt enthalten (123.45).














