Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

Die View-Schicht: die Template-Sprache neben Twig und Blade

Die Template-Sprache von Exponential für Entwickler, die Twig, Blade, Jinja oder ERB kennen - Syntax im direkten Vergleich, Operatoren statt Infix-Symbolen, kein automatisches Escaping, fetch im Template, das Pagelayout…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/templates-vs-twig-and-blade.md

On this page

This page is a translation. Read the English original

Die View-Schicht: die Template-Sprache neben Twig und Blade

Diese Seite richtet sich an Entwickler, die Templates in Twig, Blade, Jinja oder ERB schreiben. Exponential rendert HTML mit einer eigenen Template-Sprache: .tpl-Dateien, die eZTemplate (lib/eztemplate/classes/eztemplate.php) zu PHP kompiliert. Auf den ersten Blick ähnelt sie Smarty; Ein Template von Smarty umziehen und Was die Template-Sprache ist behandeln sie ausführlich. Hier finden Sie die Unterschiede, die am meisten zählen, wenn Sie von einem anderen Framework kommen.

Inhalt

  1. Syntax im direkten Vergleich
  2. Fünf Unterschiede, die beißen
  3. Layouts
  4. Includes, Partials und Komponenten
  5. Die Sprache erweitern
  6. Kompilierung und Caches
  7. Kann ich stattdessen Twig verwenden?

Syntax im direkten Vergleich

AufgabeTwigBladeTemplate-Sprache von Exponential
Ausgeben, escapt{{ title }}{{ $title }}{$title|wash}
Roh ausgeben{{ html|raw }}{!! $html !!}{$html}
Variable{% set n = 3 %}@php($n = 3){def $n = 3} (neu), {set $n = 4} (ändern)
Bedingung{% if a > 1 %}@if($a > 1){if $a|gt( 1 )} ... {/if}
Schleife{% for p in pages %}@foreach($pages as $p){foreach $pages as $p} ... {/foreach}
Attributpage.parent.name$page->parent->name$page.parent.name
Filter oder Helfername|upperstrtoupper($name)$name|upcase
Arithmetika + b$a + $bsum( $a, $b ) oder $a|sum( $b )
Übersetzung'Save'|trans__('Save')'Save'|i18n( 'extension/expdemo' )
URLpath( 'item', {id: 42} )route( 'item', 42 )'expdemo/item/42'|ezurl
Kommentar{# ... #}{{-- ... --}}{* ... *}

Fünf Unterschiede, die beißen

Aus Smarty und die Template-Sprache: die Unterschiede im Detail:

  1. Kein automatisches Escaping. Die Engine escapt Ausgaben nie; schreiben Sie |wash an alles, was aus Inhalten, URLs oder Request-Parametern stammt. Gerenderter Rich Text wird über sein View-Template (attribute_view_gui) ausgegeben und darf nicht erneut gewaschen werden.
  2. Keine Infix-Arithmetik und keine Infix-Vergleiche. {if $a > 1} tut nicht, was es zu sagen scheint; verwenden Sie gt, eq, and, sum und die anderen Operatoren.
  3. Unbekannte Operatoren reichen ihre Eingabe durch und protokollieren einen Fehler, statt die Seite scheitern zu lassen, sodass ein Tippfehler Rohdaten ausgeben kann. Beobachten Sie während der Entwicklung die Debug-Ausgabe.
  4. def und set sind strikt: def legt an, set ändert; falscher Gebrauch schreibt eine Warnung.
  5. Kein PHP in Templates. Logik gehört in Operatoren, Fetch-Funktionen und die View.

Layouts

Es gibt kein {% extends %} und kein @extends. Das Pagelayout des Siteaccess (pagelayout.tpl) ist das Grundlayout jeder Seite: Die View rendert ihr eigenes Template, und das Pagelayout gibt es mit {$module_result.content} aus (Responses). Wo Twig einen Block eines Eltern-Templates überschreiben würde, ersetzt Exponential ein ganzes Template durch einen Override, der nach Bedingungen wie der Inhaltsklasse, dem Knoten oder dem View-Modus ausgewählt wird (Template-Auflösung).

Includes, Partials und Komponenten

BedarfVerwenden Sie
Ein Partial{include uri='design:parts/menu.tpl' title=$node.name}; zusätzliche Parameter werden im eingebundenen Template zu Variablen
Ein Inhaltselement in einem View-Modus rendern (eine „Komponente“ für Inhalte){node_view_gui content_node=$child view='line'} wählt node/view/line.tpl und dessen Overrides
Ein einzelnes Feld rendern{attribute_view_gui attribute=$node.data_map.title} verwendet das View-Template des Datentyps
Variablen getrennt haltenNamespaces, gesetzt durch die View-Funktionen (Namespaces)

Die Sprache erweitern

Twig oder BladeExponential
Twig-Filter oder -Funktion, Blade-Direktiveein Template-Operator: eine PHP-Klasse, registriert in extension/<ext>/autoloads/eztemplateautoload.php (Template-Operatoren)
Twig-Tageine Template-Funktion (Eigene Template-Funktionen)
View-Composer oder ein Twig-Global aus einem Diensteine Fetch-Funktion (fetch( 'expdemo', 'stats', hash() )) (Daten in Templates bringen)

Kompilierung und Caches

Templates werden zu PHP-Dateien im Cache-Verzeichnis kompiliert und neu erzeugt, wenn sich die Quelle ändert (Template-Kompilierung). Inhaltsansichten werden zusätzlich im View-Cache gehalten, und {cache-block} speichert fertige HTML-Fragmente (Template-Caches, Caching). Wenn sich ein Template „nicht ändert“, liegt die Ursache fast immer in einem dieser Caches.

Kann ich stattdessen Twig verwenden?

Nicht im Legacy-Kernel allein. Twig steht zur Verfügung, wenn der Kernel über die Legacy Bridge innerhalb der Symfony-Plattform läuft: Die öffentliche Site kann mit Twig rendern, während die Redakteure die Legacy-Administration behalten, und die Erweiterung ngsymfonytools ermöglicht es einem .tpl-Template, ein Twig-Template einzubinden oder einen Symfony-Controller zu rendern (Symfony Legacy Bridge, Site-Bundles der Plattform).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x