Felder

Objekte und ObjektTemplates speichern alle ihre Eigenschaften in sogenannten Feldern. Aus den Feldern wird beim ConfigReload in der Datenbank eine Spalte in der entsprechende Tabelle generiert. 

Die XML-Dokumentation wie die Felder definiert werden müssen, ist hier zu finden.

Wenn man bei einem Konquadrat-Objekt einen Wert aus einem Feld setzen oder holen möchte sollte man normaler Weise AbstractObject::get() und AbstractObject::set() verwenden, da ansonsten die im Trait definierten get*() und set*() Methoden umgangen werden.

Für einige Feldtypen oder falls man bewusst die get*() und set*() Methoden umgehen möchte, kann es jedoch nötig sein die Feldinstanz zu erhalten. Um ein AbstractObject nach einem Feld zu fragen, kann die Methode AbstractObject::getField() aufgerufen werden. Änderungen in dem Feld-Objekt werden an das AbstractObject zurückgeschickt.

Boolean

Boolean kann nicht null sein.

Falls nichts anderes definiert ist, ist der Default-Wert 0.

Integer

Eine Ganzzahl.

Float

Eine Gleitkommazahl.

String

Eine Zeichenkette mit einer begrenzten Länge.

Text

Eine Zeichenkette mit 'unbegrenzer' Länge.

Xml

Gleich mit text-Field nur ein anderer Editor. Zusätzlich gibt es noch optional eine Autovervollständigung und eine Validierung (beides nur für vordefinierte XML-Dateitypen). 

Json

Gleich mit text-Field nur ein anderer Editor.

Das Feld erlaubt neben Strings auch noch andere Typen. Alles was kein String ist wird mit json_encode encodet.

Zusätzlich gibt es noch eine Option das Json als 'pretty' zu formatieren. 

Der Wert MUSS ein UTF-8 string sein! 

Password

Ein Passwortfeld. Passwortfelder werden automatisch gehasht.

Um zu überprüfen ob ein Passwort gültig ist kann folgende Methode aufgerufen werden:

Description
public \com\setasign\Konquadrat\Field\Password::isValidPassword (
string $password
): bool

Check whether the password is valid

Parameters
$password : string
 

Select

Eine festdefinierte Auswahlliste. Kann nur einen Wert aus der Liste besitzen (kein NULL). 

Falls beim Laden aus der Datenbank ein ungültiger Wert versucht wird zu setzen, wird das Feld auf den Default zurückgesetzt, ansonsten wird bei einem ungültigem Wert die Exception InvalidValueException geworfen.

Wenn als Wert NULL gesetzt wird, wird der Wert auf den Standard zurückgesetzt.

Der Wert von dem Feld muss nicht dem Anzeigetext entsprechen. Die Methode getValue() gibt nur den Wert zurück. Um den Anzeigetext zu erhalten muss folgende Methode aufgerufen werden:

Description
public \com\setasign\Konquadrat\Field\Select::getText (
bool $useSystemLanguage = false
): string

Get the display text for the chosen option.

Parameters
$useSystemLanguage : bool
 

Money

Ein Geldbetrag. Das Money-Feld ist in der Datenbank decimal(18, 5).

Percentage

Ein Prozentwert. Das Prozentfeld ist in der Datenbank decimal(10 + $precision, $precision).

File

Eine Datei.

Das File-Field ist vom Handling ein wenig speziell. In der Datenbank wird nicht die Datei abgespeichert, sondern nur die Metadaten für die Datei, also den Namen, der Speicherort und der ContentType. Die Daten werden als Json-String in der Datenbank gespeichert.

Für File-Fields sollte "setValue()" nicht verwendet werden! Statt dessen gibt es folgende Methoden zum schreiben und lesen von Dateien:

ensureDataDirectory()

Ensures the data directory exist

getFile()

setContentType()

setFile()

Set file. Will generate the name of the file in kon2 data directory.

setFileByFileObject()

Will set the file by a file object. If the object is an instance of SavedFile it will share the exact same file!

setFilename()

Image

Ein Bild. Das Feld erweitert das File-Field.

Bitmask

Eine Bitmask.

Der Wert ist ein Integer oder NULL. Alle Flags die laut Konfiguration nicht möglich sind werden beim setzen entfernt.

Es ist möglich als Wert ein Array zu setzen, dann wird jeder Eintrag in dem Array als ein Flag gewertet.
Z.B. [0,1,4]  wird zu 1 + 2 + 16 = 19 

Mit folgenden Methoden ist es möglich die Anzeigetexte für die ausgewählten Optionen zu erhalten:

getText()

Get the display text for the chosen flags as one string delimited by $delimiter.

getTexts()

Get the display text for the chosen flags as an array of strings (one entry for every active flag).

Date

Eine Datumsangabe.

Der Wert ist immer im Format 'Y-m-d'. Beim Setzen des Wertes kann entweder ein \DateTime Objekt verwendet werden, ein String der versucht wird von \DateTime zu parsen oder ein Array mit 3 Einträgen (Jahr, Monat, Tag).

Time

Eine Zeitangabe.

Der Wert ist immer im Format 'H:i:s'. Beim Setzen des Wertes kann entweder ein \DateTime Objekt verwendet werden, ein String der versucht wird von \DateTime zu parsen oder ein Array mit 2-3 Einträgen (Stunde, Minute, Sekunde).

Datetime

Eine Datums- und Zeitangabe.

Der Wert ist immer im Format 'Y-m-d H:i:s'. Beim Setzen des Wertes kann entweder ein \DateTime Objekt verwendet werden, ein String der versucht wird von \DateTime zu parsen oder ein Array mit 6 Einträgen (Jahr, Monat, Tag, Stunde, Minute, Sekunde).

Reference

Eine Referenz auf eine anderes Objekt. Bei der Konfiguration muss angegeben werden auf welchen Typ das Feld zeigt. Dieser Typ muss zwingend ein Objekt-Grid besitzen! Hinweis: Referenzfelder bekommen in der Datenbank automatisch einen Index.

In der Feld-Instanz von der Referenz ist nur NULL oder der Integer gespeichert. Um Referenzen zu setzen sollte jedoch nicht das Feld verwendet werden, sondern die Helfer-Methoden in AbstractObject:

Callback

Ruft beim erstmaligem Speichern den definierten Callback auf.

Der Wert wird als VarChar(255) in der Datenbank gespeichert. Wenn der Wert vor dem Speichern NULL oder ein leerer String ist, wird anhand der Konfiguration ein neue Wert generiert.

  • searchType - Objekt-Typ nach dem gesucht wird, falls nicht definiert wird dieses Objekt als Generator verwendet!
  • searchBy - Feld nach dem gesucht wird
  • serachFor - Feldinhalt nach dem gesucht wird
  • generator - Methode die auf die Generator-Instanz ausgeführt wird

Häufig werden Callback Felder zusammen mit den NumberRanges verwendet (mehr dazu unter 3.5 Vordefinierte Objekte).

Magic

Ein Magic-Field ist ein Feld, das nicht veränderbar und ergeben sich aus anderen Feldern (z.B. Alter aus Geburtsdatum).

Mehr zu Magic Feldern ist hier zu finden.

DynamicMagic

Ein DynamicMagic-Field generiert beim ConfigReload aus einem Feld mehrere Felder dynamisch. Die generierten Felder sind alle magic also nicht veränderbar. 

Mehr zu DynamicMagic Feldern ist hier zu finden.

MultiLangString

Pseudofeld, welches ein String-Felder für jede Projektsprache erstellt beim ConfigReload. Die Name der Felder ergeben sich wie folgt, den Namen vom MultiLangString-Feld + '_' + Projektsprache, also z.B. aus dem MultiLangString Feld 'Name' wird 'Name_de'.

Die Methoden setValue() und getValue() leiten die Aufrufe an das Feld der aktuellen Projektsprache.

MultiLangText

Gleich mit MultiLangString, nur dass statt String-Feldern Text-Felder generiert werden.