Templatesprache

Die Fuman-Templatesprache ist eine Eigenentwicklung.

Variablen

Variabeln können folgendermassen geholt werden.

{variable}
{objekt.key}
{objekt.key.key}
{objekt}[
    {key}
]
{objekt}[
    {key.key}
]
{array}[
    {*}
]

Vordefinierte Funktionen

Es stehen diverse Funktionen zur Verfügung welche aufgerufen werden können. Die genauen Parameter & Funktionen finden sich in der API.

Inhalte als HTML-Attribut vorbereiten (Ohne Sonderzeichen usw.):
{attr:key}

Komponent instanzieren und argumente mitgeben:
{component:app_ihrappname_component_ihrkomponent}
{component:app_ihrappname_component_ihrkomponent:'hallo welt'}
{component:app_ihrappname_component_ihrkomponent:'hallo welt':variable}

Ein Wert aus der Konfiguration(config.php) auslesen:
{config:section.key}

Ein Datum formatieren:
{date:variable:format}

Eine Variabel dumpen ala var_dump:
{dump:variable}

Array Inhalte Filter mit first, last, usw.
{filter:variable:expression}
z.B: {filter:variable:'first'}

Eine Globale Variable ausgeben:
{global:variable}
z.B. {global:frontendRoot}

Ein Datum international bzw. Sprachabhängig formatieren:
{i18ndate:variable:format}

IF-Logik um Parameter gegen null oder andere inhalte zu prüfen:
{if:variable}[ hallo {variable}]
{if:!variable}[variable not set]
{if:variable:variable2}[text is {variable}{variable2}]
if:x:operand:y}
{if:_position:>=:_super.limit}[{_position} > = {_super.limit}]





Inner Template

Inner-Templates sind Template-Blocks, sie definieren einen Template-Abschnitt.

Wird z.B. etwas aufgelistet, wird häufig ein Inner-Template verwendet, es beschreibt wie der Listeninhalt dargestellt werden soll.

Ein Inner-Template wird durch Eckige Klammern umschlossen. Weiter kann ein Inner-Temlate nur direkt nach einem Ausdruck definiert werden.

<ul>
{listeMitObjekten}[
  <li>
    //zugriff auf den Wert title des Objektes in der Liste 
    {key}
  </li>
]
<ul>

Arrays

Objekte welche sich in Arrays befinden, erhalten zusätzlich folgende Parameter:

{arrayMitObjekten}[
Parent-Objekt/Array: {_super}
Aktuelle Position (Beginnt bei 1){_position}
Länge des Arrays: {_total}
Boolean ob erstes Objekt: {_first}
Boolean ob letztes Objekt: {_last}
Boolean ob gerade Position: {_even}
]

Pipes

Angelehnt an die Unix CLI (command line interface) Pipe Funktion ist die Template Sprache mit einer Möglichkeit erweitert, Daten direkt im Template vor der Ausgabe mit nacheinander ausgeführten Funktionen zu bearbeiten/aufzubereiten.

Das Sprachkonstrukt ist wie beim Unix-CLI der senkrechte Strich (Verkettungszeichen, Pipe) und mit _self wird auf den übergebenen Wert zugegriffen.

//Zeichenfolge von app_core_xxx lesen und danach verkleinern
{translation:app_core_xxx|call:php:strtolower:_self}

//Zeichenfolge von app_core_xxx lesen, verkleinern und danach einem neu Instanziierten Komponenten übergeben
{translation:app_core_xxx|call:php:strtolower:_self|component:app_xxx_xxx_xxx:_self}

//URI-Zeichenfolge aus einer Übersetzung lesen und danach zu einem Weblink umwandeln (aus bspw. fuman://-99.html wird https://your-domain-name.ch/-99.html)
{translation:app_appname_foo_bar_uri|call:Fuman_Util_Web:prepareUri:_self}

Snippet

Mit dem «snippet» befehl, können phtml Templates in einem phtml Template aufgerufen werden ohne das ein Komponent definiert werden muss.

Dabei kann entweder direkt ein Pfad zu einer Datei angegeben werden oder man Greift über einen Key/Namen auf ein vordefiniertes Template zurück.

//Pfad ab admin (Root) Ordner
{snippet:app/core/action/add/assets/add.phtml:*}

//relativer Pfad zum höhere/vorderen ResponseData bei welchem ein Pfad zu einem Template definiert ist.
{snippet:./snippet_xyz.phtml:*}

//Interpolierten Pfad (type ist die Variable)
{snippet:./snippet_{type}.phtml:*}