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

Daten in Templates bringen: Fetch-Funktionen und Operatoren

Wo ein Framework View-Modelle aus dem Controller übergibt, können Exponential-Templates Daten auch selbst holen - Fetch-Funktionen, die in function_definition.php deklariert sind, Template-Operatoren zum Formatieren und…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/fetch-functions-and-template-data.md

On this page

This page is a translation. Read the English original

Daten in Templates bringen: Fetch-Funktionen und Operatoren

Diese Seite richtet sich an Entwickler, die einem Template alles, was es braucht, aus dem Controller übergeben. Exponential unterstützt das ($tpl->setVariable() in Ihrer View), doch ein großer Teil seines eigenen Designs funktioniert umgekehrt: Templates holen sich Daten mit fetch( 'module', 'function', hash( ... ) ). Deshalb kann ein Template-Override für Inhalte Unterknoten, verwandte Objekte oder den aktuellen Benutzer ganz ohne PHP auflisten. Ihre Erweiterung kann eigene Fetch-Funktionen und Template-Operatoren anbieten.

Inhalt

  1. Drei Wege, auf denen Daten ein Template erreichen
  2. Fetch-Funktionen
  3. Eine Fetch-Funktion schreiben
  4. Template-Operatoren
  5. Regeln für das Holen von Daten

Drei Wege, auf denen Daten ein Template erreichen

WegEntsprechung im FrameworkVerwenden für
$tpl->setVariable( 'items', $items ) in einer ViewVariablen an render() übergebenDaten Ihrer eigenen Modul-View
fetch( 'expdemo', 'items', hash( 'limit', 5 ) ) im TemplateView Composer, Twig-Funktionen auf Basis von Diensten, Template-Tags mit AbfragenDaten, die ein Override oder ein gemeinsam genutztes Teil-Template überall braucht, wo es verwendet wird
Ein Operator: $price|expdemo_moneyTwig-Filter, Blade-Direktiven, Django-Template-FilterFormatierung und kleine Berechnungen

Fetch-Funktionen

Die Module des Kernels bieten viele davon: fetch( 'content', 'node', hash( 'node_id', 2 ) ), fetch( 'content', 'list', hash( 'parent_node_id', 2, 'limit', 10 ) ), fetch( 'user', 'current_user' ), fetch( 'user', 'has_access_to', hash( 'module', 'expdemo', 'function', 'manage' ) ). Jedes Modul deklariert sie in function_definition.php, das einen Fetch einer call_method und deren Parametern zuordnet; eZFunctionHandler (lib/ezutils/classes/ezfunctionhandler.php) führt sie aus (Fetch-Funktionen, Fetch-Funktionen: Daten in Templates lesen).

Eine Fetch-Funktion schreiben

Aus Eine eigene Fetch-Funktion schreiben:

<?php
// extension/expdemo/modules/expdemo/function_definition.php
$FunctionList = array();
$FunctionList['items'] = array(
    'name' => 'items',
    'operation_types' => array( 'read' ),
    'call_method' => array( 'class' => 'expDemoFunctionCollection',
                            'method' => 'fetchItems' ),
    'parameter_type' => 'standard',
    'parameters' => array(
        array( 'name' => 'limit',  'type' => 'integer', 'required' => false, 'default' => 10 ),
        array( 'name' => 'offset', 'type' => 'integer', 'required' => false, 'default' => 0 ) ) );

Die Methode gibt array( 'result' => $value ) zurück. Zurückgegebene Objekte sollten eZPersistentObjects sein oder attribute() und hasAttribute() anbieten, damit Templates $item.title lesen können.

{def $items = fetch( 'expdemo', 'items', hash( 'limit', 5 ) )}
{foreach $items as $item}<li>{$item.title|wash}</li>{/foreach}
{undef $items}

Template-Operatoren

Ein Operator ist eine PHP-Klasse, die in extension/<ext>/autoloads/eztemplateautoload.php registriert ist und gefunden wird, weil die Erweiterung in site.ini [TemplateSettings] ExtensionAutoloadPath[] aufgeführt ist (Template-Operatoren schreiben, Funktionen oder Operatoren). Operatoren müssen escapen, was sie erzeugen, oder Daten zurückgeben, die das Template mit wash behandelt.

Regeln für das Holen von Daten

  • Berechtigungen werden von den Inhalts-Fetches angewendet (content/read mit seinen Einschränkungen). Ihre eigenen Fetches müssen Berechtigungen selbst prüfen, denn ein Template kann sie von überall aufrufen.
  • Begrenzen Sie jede Abfrage. Ein Fetch ohne limit auf einem großen Baum ist das häufigste Performance-Problem.
  • Denken Sie an die Caches. Inhalts-Views werden gecacht; Daten aus Ihren eigenen Tabellen lassen sie nicht verfallen. Verwenden Sie einen {cache-block} mit expiry oder leeren Sie den Cache, wenn sich Ihre Daten ändern (Caching).
  • Halten Sie die Methode schlank. Rufen Sie dieselbe Dienstklasse auf, die Ihre Views und Befehle verwenden, und testen Sie sie mit PHPUnit.

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