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

Eine eigene Fetch-Funktion schreiben

Die Daten Ihrer Anwendung mit fetch() für Templates bereitstellen - function_definition.php, die Klasse der Funktionssammlung, die array( 'result' => ... ) zurückgibt, Parametertypen und Standardwerte, Rechteprüfungen…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/writing-a-fetch-function.md

On this page

This page is a translation. Read the English original

Eine eigene Fetch-Funktion schreiben

Diese Seite richtet sich an Anwendungsentwickler, die möchten, dass Templates ihre Daten mit fetch( 'expdemo', 'items', hash( ... ) ) lesen. Eine Fetch-Funktion wird in der function_definition.php des Moduls deklariert und von einer statischen Methode implementiert, die array( 'result' => ... ) zurückgibt.

Inhalt

  1. Die Deklaration
  2. Die Implementierung
  3. Verwendung
  4. Regeln

Die Deklaration

extension/expdemo/modules/expdemo/function_definition.php, im selben Verzeichnis wie module.php:

<?php
$FunctionList = array();
// fetch( 'expdemo', 'items', hash( 'limit', 5, 'offset', 0 ) )
$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 Dateien des Kernels haben dieselbe Form (kernel/exphelp/function_definition.php, kernel/content/function_definition.php).

Die Implementierung

extension/expdemo/classes/expdemofunctioncollection.php:

<?php
class expDemoFunctionCollection
{
    public static function fetchItems( $limit = 10, $offset = 0 )
    {
        $limit = max( 1, min( 100, (int)$limit ) );
        $offset = max( 0, (int)$offset );
        $access = eZUser::currentUser()->hasAccessTo( 'expdemo', 'read' );
        if ( $access['accessWord'] === 'no' )
            return array( 'result' => array() );
        return array( 'result' => expDemoItem::fetchList( $limit, $offset ) );
    }
}

Geben Sie bei Erfolg array( 'result' => $value ) zurück. Generieren Sie danach die Autoloads neu und leeren Sie die Caches.

Verwendung

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

Zurückgegebene Objekte sollten eZPersistentObjects sein oder attribute() und hasAttribute() anbieten, damit Templates $item.title lesen können (Persistente Objekte und eigene Tabellen).

Regeln

  • Prüfen Sie die Rechte innerhalb der Funktion; Templates können von überall aufgerufen werden.
  • Begrenzen Sie jedes Limit.
  • Halten Sie die Methode schlank: Rufen Sie eine Dienstklasse auf, die auch Ihre Ansichten und Befehle verwenden.
  • Benennen Sie Parameter wie die Inhalts-Fetches (limit, offset, sort_by), damit Template-Autoren richtig raten.
  • Testen Sie die statische Methode wie jede Klasse mit PHPUnit (PHPUnit-Tests ohne Datenbank).

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