Die Operatoren fetch und fetch_alias
Templates lesen Daten mit fetch, das ein Operator ist, kein Funktions-Tag: Er gibt einen Wert zurück, den Sie mit
def zuweisen oder über die Pipe an andere Operatoren weitergeben. fetch und fetch_alias werden von
eZTemplateExecuteOperator (lib/eztemplate/classes/eztemplateexecuteoperator.php) über
lib/eztemplate/classes/eztemplateautoload.php registriert. Die Fetch-Funktionen selbst (content node, list,
tree, user current_user und so weiter) sind einzeln in der
Referenz der Fetch-Funktionen dokumentiert.
Inhalt
- fetch
- fetch_alias
- Wie ein fetch aufgelöst wird
- Wenn ein fetch fehlschlägt
- Kompilierte fetch-Aufrufe
- Verwandte Seiten
fetch
fetch
Ruft eine Funktion eines Moduls auf und gibt ihr Ergebnis zurück.
| Parameter | Typ | Pflicht | Standard |
|---|---|---|---|
module_name | Zeichenkette, etwa content, user, class, section | ja | false |
function_name | Zeichenkette, ein Schlüssel von $FunctionList des Moduls | ja | false |
function_parameters | Hash der Parameter der Funktion | nein | array() |
Eingabe: keine. Gibt zurück, was die Funktion in den Schlüssel result ihrer Antwort legt: ein Objekt, eine Liste,
eine Zahl, oder null, wenn der Aufruf fehlschlägt. Generierte Referenz: fetch.
Die Kategorie Recipes auf einer Entwicklungsinstallation (Knoten 144) und ihre Unterknoten:
{def $node = fetch( 'content', 'node', hash( 'node_id', 144 ) )
$count = fetch( 'content', 'list_count', hash( 'parent_node_id', 144 ) )
$first = fetch( 'content', 'list', hash( 'parent_node_id', 144,
'limit', 3,
'sort_by', array( 'name', true() ) ) )}
$node.name|wash (node $node.node_id, class $node.class_identifier) has $count children; the first three by name:
foreach $first as $child
- $child.name|wash
/foreachAusgabe:
Recipes (node 144, class ng_category) has 18 children; the first three by name:
- Almond French Toast
- Avocado Kale Pesto Grilled Cheese
- Gluten-Free Shrimp Pad Thai with TofuAndere Module funktionieren genauso. Der Kommandozeilenlauf, der diese Seite ausgegeben hat, ist nicht angemeldet,
daher ist current_user der anonyme Benutzer:
{def $user = fetch( 'user', 'current_user' )
$classes = fetch( 'class', 'list', hash( 'class_filter', array( 'folder', 'ng_article' ) ) )}
Current user in this CLI run: $user.login|wash (logged in: $user.is_logged_in|choose( 'no', 'yes' ))
Classes: foreach $classes as $c$c.identifier /foreachAusgabe:
Current user in this CLI run: anonymous (logged in: no)
Classes: folder ng_articleDer Parameter-Hash kann eine vorher gebaute Variable sein:
def $params = hash( 'parent_node_id', 144, 'limit', 2, 'sort_by', array( 'name', false() ) )
foreach fetch( 'content', 'list', $params ) as $k$k.name|wash; /foreachAusgabe:
Zucchini Zoodles with Ground Turkey Tomato Sauce; Vibrant Guacamole;fetch_alias
fetch_alias
Ruft einen fetch über einen kurzen Namen auf, der in fetchalias.ini definiert ist. Der Alias nennt das Modul, die
Funktion, welche Template-Parameter welchen Funktionsparametern entsprechen (Parameter[]) und feste Werte
(Constant[]); ein im Template angegebener Parameter hat Vorrang vor einer gleichnamigen Konstante, und Parameter, die
der Alias nicht zuordnet, werden unverändert weitergegeben (eZFunctionHandler::executeAlias()).
| Parameter | Typ | Pflicht | Standard |
|---|---|---|---|
function_name | Zeichenkette, ein Abschnitt von fetchalias.ini | ja | false |
function_parameters | Hash | nein | array() |
Eingabe: keine. Gibt das Ergebnis des fetch hinter dem Alias zurück. Generierte Referenz:
fetch_alias. Der Kernel definiert acht Aliase (object,
news_list, by_identifier, comments, children, children_count, subtree, reviews); jeden Alias, seine
Zuordnung und wie Sie eigene hinzufügen, finden Sie unter Fetch-Aliase.
{def $kids = fetch_alias( 'children', hash( 'parent_node_id', 144, 'limit', 2, 'sort_by', array( 'name', true() ) ) )
$n = fetch_alias( 'children_count', hash( 'parent_node_id', 144 ) )}
children_count: $n
children: foreach $kids as $k$k.name|wash; /foreachAusgabe:
children_count: 18
children: Almond French Toast; Avocado Kale Pesto Grilled Cheese;Wie ein fetch aufgelöst wird
eZTemplateExecuteOperator::modify()übergibt Modulname, Funktionsname und Parameter aneZFunctionHandler::execute()(lib/ezutils/classes/ezfunctionhandler.php).eZFunctionHandler::moduleFunctionInfo()erzeugt je Modul und Anfrage eineZModuleFunctionInfo(lib/ezutils/classes/ezmodulefunctioninfo.php), undloadDefinition()sucht<module path>/<module>/function_definition.phpin jedem Pfad voneZModule::globalPathList(). Diese Pfade kommen auseZModule::activeModuleRepositories():[ModuleSettings] ModuleRepositoriesvonmodule.ini(kernelundkernel/private/modules), danach der Ordnermodules/jeder aktiven Erweiterung, die inExtensionRepositoriesaufgeführt ist. Verwendet wird die erste gefundene Datei, und sie muss$FunctionListdefinieren.execute()sucht die Funktion, prüft, dass sie einecall_method(Klasse und Methode) undparametershat, und ruft die Methode der Function-Collection-Klasse mit den Parametern in der deklarierten Reihenfolge auf. Ein fehlender optionaler Parameter erhält seinen deklarierten Standardwert.- Die Methode gibt ein Array zurück; sein Schlüssel
resultist das, was das Template erhält.
Eine solche Funktion schreiben: Eine eigene Fetch-Funktion schreiben.
Wenn ein fetch fehlschlägt
Ein unbekanntes Modul, eine unbekannte Funktion und ein fehlender Pflichtparameter ergeben im Template alle null. Die
Gründe („Cannot execute function ... no valid data“, „No such function“, „Missing parameter“) gehen über
eZDebug::writeError() in die Debug-Ausgabe, nicht in die eigene Fehlerliste des Templates, daher bleibt ein
fehlschlagender fetch auf der Seite stumm:
unknown module: [fetch( 'no_such_module', 'list' )|is_null|choose( 'not null', 'null' )]
unknown function: [fetch( 'content', 'no_such_function' )|is_null|choose( 'not null', 'null' )]
missing parameter: [fetch( 'content', 'node' )|is_null|choose( 'not null', 'null' )]Ausgabe:
unknown module: [null]
unknown function: [null]
missing parameter: [null]Prüfen Sie das Ergebnis, bevor Sie es verwenden ({if $node} oder is_null), und sehen Sie sich während der
Entwicklung die Debug-Ausgabe an.
Kompilierte fetch-Aufrufe
Sind Modul- und Funktionsname Konstanten, löst der Compiler (fetchTransform()) die Funktionsdefinition schon beim
Kompilieren auf und schreibt Code, der die Methode der Function Collection direkt aufruft, mit den Parametern in ihrer
deklarierten Reihenfolge, statt zur Laufzeit über eZFunctionHandler zu gehen. Der Methodenaufruf ist abgesichert:
Kann der laufende Prozess die Klasse oder Methode nicht laden, ist das Ergebnis null, und ein Fehler wird in die
Debug-Ausgabe geschrieben. Ein fetch mit variablem Modul- oder Funktionsnamen bleibt ein Aufruf zur Laufzeit. Alle
Beispiele auf dieser Seite ergaben auf einer Entwicklungsinstallation interpretiert und kompiliert dieselbe Ausgabe.
Verwandte Seiten
- Fetch-Funktionen: Daten in Templates lesen
- Fetch-Grundlagen für Designer und Leistung von fetch
- Fetch-Aliase
- Die Referenz der Fetch-Funktionen (generiert)
- Alle Template-Operatoren (generiert)
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
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.