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

Datentypen

Eine neue Art von Feld für Inhaltsklassen - wann Sie einen Datentyp schreiben, wie der Kernel ihn findet und registriert, der Lebenszyklus von eZDataType, ein geprüfter Bewertungs-Datentyp und echte Beispiele zum Lernen.

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/extension-development/part-3-extension-developer/datatypes.md

On this page

This page is a translation. Read the English original

Datentypen

Teil 3, Kapitel 16. Ein Datentyp definiert eine Art von Feld, die Redakteure einer Inhaltsklasse hinzufügen können: sein Bearbeitungsformular, seine Validierung, wie er gespeichert, angezeigt, durchsucht und sortiert wird. Der Kernel bringt Dutzende mit (ezstring, ezimage, ezxmltext ...); Erweiterungen fügen weitere hinzu (eztags, birthday, ngclasslist). Dieses Kapitel erklärt den Vertrag anhand eines kleinen Bewertungs-Datentyps, der mit php -l geprüft und bei geladenem Kernel ausprobiert wurde; das nächste Kapitel behandelt Speicherung, Validierung und Templates im Detail.

Brauchen Sie einen?

Schreiben Sie einen Datentyp, wenn Redakteure eine Art von Wert eingeben müssen, die kein vorhandener Datentyp abdeckt, und der Wert zum Inhalt gehört (versioniert, übersetzt, durchsuchbar). Bevor Sie einen schreiben, prüfen Sie die Liste der verfügbaren Datentypen, wenn Sie einer Klasse ein Attribut hinzufügen, und den Katalog. Eine Auswahl, eine Zahl mit Grenzen, eine Beziehung zu anderen Inhalten: All das gibt es bereits.

Wie der Kernel ihn findet

In extension/mysite_hello/settings/content.ini.append.php:

<?php /* #?ini charset="utf-8"?

[DataTypeSettings]
ExtensionDirectories[]=mysite_hello
AvailableDataTypes[]=mysiterating

*/ ?>
  • ExtensionDirectories[] sorgt dafür, dass der Kernel in extension/mysite_hello/datatypes/ sucht.
  • AvailableDataTypes[] bietet den Datentyp im Klasseneditor an.
  • Die Datei muss datatypes/mysiterating/mysiteratingtype.php heißen: eZDataType::loadAndRegisterType() (kernel/classes/ezdatatype.php) bindet <directory>/<type>/<type>type.php ein.
  • Templates liegen in Ihrem Design, daher braucht die Erweiterung außerdem DesignExtensions[] in design.ini.append.php.

Die echte Erweiterung birthday macht genau das (ihre settings/content.ini.append nennt ExtensionDirectories[]=birthday und AvailableDataTypes[]=ezbirthday).

Die Klasse

<?php
/**
 * A rating from 1 to 5, stored in data_int of the object attribute.
 */
class mysiteRatingType extends eZDataType
{
    const DATA_TYPE_STRING = 'mysiterating';

    public function __construct()
    {
        parent::__construct( self::DATA_TYPE_STRING,
                             ezpI18n::tr( 'extension/mysite_hello', 'Rating (1 to 5)', 'Datatype name' ),
                             array( 'serialize_supported' => true ) );
    }

    // validateObjectAttributeHTTPInput(), fetchObjectAttributeHTTPInput(), objectAttributeContent() ...
    // the complete class is in the next chapter
}

eZDataType::register( mysiteRatingType::DATA_TYPE_STRING, 'mysiteRatingType' );
TeilBedeutung
DATA_TYPE_STRINGder Bezeichner, der für jedes Attribut dieses Typs in der Datenbank gespeichert wird; ändern Sie ihn nie, sobald er verwendet wird
parent::__construct( $dataTypeString, $name, $properties )registriert den Bezeichner, den im Klasseneditor angezeigten Namen (übersetzt) und Eigenschaften
'serialize_supported' => trueder Typ kann in Paketen exportiert werden
eZDataType::register() am Ende der Dateisagt dem Kernel, welche Klasse den String implementiert

Bei geladenem Kernel gab eZDataType::create( 'mysiterating' ) ein Objekt der Klasse mit dem Namen "Rating (1 to 5)" zurück.

Der Lebenszyklus

WannMethoden, die der Kernel aufruft
Ein Redakteur fügt das Attribut einer Klasse hinzuinitializeClassAttribute(), fetchClassAttributeHTTPInput(), validateClassAttributeHTTPInput(), storeClassAttribute()
Ein Redakteur legt Inhalte an oder bearbeitet sieinitializeObjectAttribute(), validateObjectAttributeHTTPInput(), fetchObjectAttributeHTTPInput(), storeObjectAttribute()
Der Inhalt wird veröffentlichtonPublish()
Ein Template zeigt ihn anobjectAttributeContent() (das .content in Templates), hasObjectAttributeContent() (.has_content)
Suche, Sortierung, NamenmetaData(), isIndexable(), sortKey(), sortKeyType(), title()
Import und ExporttoString(), fromString(), serializeContentObjectAttribute(), unserializeContentObjectAttribute()
EntfernendeleteStoredObjectAttribute(), deleteStoredClassAttribute()

Jede Methode hat in eZDataType eine Vorgabe; überschreiben Sie nur, was Ihr Typ braucht. Die vollständige Liste mit Signaturen steht in Die API von eZDataType.

Von echten Datentypen lernen

DatentypZeigt
extension/birthday (ezbirthday)ein Datum, gespeichert in data_text, drei Bearbeitungsfelder, Validierung, Informationssammlung
kernel/classes/datatypes/ezinteger/den einfachsten Zahlentyp im Kernel
extension/ngclasslisteine Liste, gespeichert als Text
extension/eztagseinen Datentyp mit eigenen Tabellen und Modulen

RAD

Datatype extension (/setup/datatype) schreibt die Klasse, die Einstellungen und die vier Templates; siehe Mit RAD: ein Datentyp. Die von Hand geschriebene Fassung ist Von Hand: ein Datentyp.

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