Skip to content

Latest commit

 

History

History
414 lines (253 loc) · 10.5 KB

eigenschaften.md

File metadata and controls

414 lines (253 loc) · 10.5 KB

Eigenschaften

"rex"-Klasse

Die Methoden der Klasse rex sind global in Templates, Modulen und AddOns verfügbar und ermöglichen Zugriff auf Grundeinstellungen und Zustände des Systems. Methoden wie setProperty und getProperty können auch verwendet werden, um systemweit eigene Eigenschaften bereitzustellen.

Config-Methoden

Die Werte werden in der Tabelle rex_config gespeichert.

Hinweis: AddOns können ihre Konfiguration über das Package-Objekt in die Konfiguration schreiben: rex_addon::get($addon)->setConfig($key, $value); und lesen $value = rex_addon::get($addon)->getConfig($key);

Property-Methoden

Property-Methoden des Cores werden über "rex"-Klasse und über den Namespace des jeweiligen AddOns (z. B. vom Project-AddOn) bereitgestellt. Die in den Properties gespeicherten Werte werden dynamisch während der Laufzeit verwaltet und werden zur Laufzeit gesetzt und abgerufen. Hierzu zählen auch die Properties, die in den package.yml der AddOns und in der config.yml des Cores hinterlegt sind.

Zur Verwendung der Properties in eigenen Prokjekten, sollten diese im Namespace eines AddOns verwaltet werden. Kollisionen mit den Core-Definitionen und weiteren AddOns werden so vermieden.

Verwendung eigener Properties in Projekten

Properties sollten in einem eigenen Namespace unabhängig vom Core (rex:) verwendet werden. Es bietet sich an hierzu z. B. das project-AddOn oder ein anderes AddOn zu verwenden. So werden Kollisionen mit anderen AddOns und dem Core vermieden.

Setzen einer AddOn spezifischen Property

$project = rex_addon::get('project');
$project->setProperty($key, $value);

Auslesen einer AddOn spezifischen Property

$project = rex_addon::get('project');
$project->getProperty($key);

Auslesen über REDAXO-Variablen in Templates und Blöcken

REX_PROPERTY[namespace=project key=foo]

Möchte man eine Property in einem Template auslesen, die in Blöcken gesetzt wurde, sollte man vorab den Artikel holen. z. B. per $article='REX_ARTICLE[]'; und dann die Property auslesen.

Beschreibung der Methoden

getAccesskey

Beispiel:

<button type="submit" <?= rex::getAccesskey("speichern","s") ?>>Speichern</button>

schreibt

<button type="submit" accesskey="s" title="speichern[s]">Speichern</button>

in die Ausgabe.

Für den Access-Key können auch Werte aus config verwendet werden: save: s apply: x delete: d add: a

Beispiel:

<button type="submit" <?= rex::getAccesskey("speichern","save") ?>>Speichern</button>

schreibt

<button type="submit" accesskey="s" title="speichern[s]">Speichern</button>

in die Ausgabe.

getConfig

Beispiel:

rex::getConfig('version') => "5.3"

Siehe auch: setConfig

getDirPerm

Liest die Eigenschaft von dirperm aus.

Beispiel: rex::getDirPerm() => 755

getErrorEmail

Gibt die im System eingestellte Error-E-Mail-Adresse aus.

Beispiel: rex::getErrorEmail() => 'info@example.com'

getFilePerm

Liest die Eigenschaft von fileperm aus.

Beispiel: rex::getFilePerm() => 664

getProperty

Liest die Eigenschaft des Wertes, der zuvor über setProperty gespeichert wurde.

Beispiel: rex::getProperty('myvar') => Inhalt des zuvor über rex::setProperty('myvar',$var) gespeicherten Wertes.

Die Werte können von einem beliebigen Typ sein. ,z.B.:

Wenn man weiß, dass ein Array in einem rex_addon- oder rex_config-Wert existiert, kann man dieses direkt abfragen:

rex_addon::get('addonname')->getProperty('arrayroot')['key']['subkey']

rex_config::get('key')->getProperty('arrayroot')['key']['subkey']

Siehe auch: setProperty, hasProperty und removeProperty

getServer

Liest den Wert aus, der in den Systemeinstellungen im Feld URL der Website eingetragen wurde.

Beispiel: rex::getServer() => http://example.com/

Die Methode kann verwendet werden, um absolute URLs zu erstellen.

getServerName

Liest den Wert aus, der in den Systemeinstellungen im Feld Name der Website eingetragen wurde.

Beispiel: rex::getServerName() => "Meine supertolle Website"

Die Methode kann verwendet werden, um den Title-Tag zu füllen.

getTable

Fügt an einen übergebenen Tabellennamen das in der config stehende Prefix für die Datenbanktabellen hinzu. Standard: rex_

Parameter: Tabellenname

Beispiel: rex::getTable('adressen') => rex_adressen

Die Funktion ist bevorzugt einzusetzen anstelle von rex::getTablePrefix.'adressen'

getTablePrefix

Liefert den Wert für den in der config eingestellten Table Prefix für Datenbanktabellen. Standard: rex_

Beispiel: rex::getTablePrefix() => rex_

Die Methode rex::getTable() ist bevorzugt einzusetzen.

getTempPrefix

Liefert den Wert für den in der config eingestellten temp_prefix . Standard: tmp_

Beispiel: rex::getTempPrefix() => tmp_

getUser

Wenn ein REDAXO Benutzer im Backend angemeldet ist, liefert diese Methode den Benutzer als User-Objekt.

Beispiel: rex::getUser()->getName() => Administrator

Hinweis: Selbst wenn ein Nutzer angemeldet ist, wird rex::getUser() im Frontend nicht automatisch befüllt, sondern erst, wenn es zum ersten Mal explizit angefordert wurde. Im Frontend sollte die Abfrage daher so durchgeführt werden:

if (rex_backend_login::createUser()) {
    $user = rex::getUser()->getName();
}

getVersion

Liefert die installierte Version von REDAXO.

Beispiel: rex::getVersion() => "5.3.0"

if(rex_string::versionCompare(rex::getVersion(), '5.3.0', '>=')) ... prüft, ob die REDAXO-Version mindestens 5.3.0 ist.

hasConfig

Prüft, ob ein Config-Wert gesetzt ist.

Beispiel: rex::hasConfig('version') => true

hasProperty

Prüft, ob eine Eigenschaft gesetzt ist.

Beispiel: rex::hasProperty('myvar') => true

Siehe auch: setProperty, getProperty und removeProperty

isBackend

Prüft, ob gerade das Backend aufgerufen wird. Wird oft in Modulen und AddOns verwendet, um die Backend-Ausgabe anders zu gestalten als die Frontend-Ausgabe.

Beispiel: rex::isBackend() => true im Backend, false im Frontend

isFrontend

Prüft, ob gerade das Frontend aufgerufen wird. Wird oft in Modulen und AddOns verwendet, um die Frontend-Ausgabe anders zu gestalten als die Backend-Ausgabe.

Beispiel: rex::isFrontend() => true im Frontend, false im Backend

isDebugMode

Prüft, ob der DebugMode in den Systemeinstellungen aktiviert ist.

Beispiel: rex::isDebugMode() => true oder false

isSafeMode

Prüft, ob der SafeMode des Systems aktiviert ist. Im SafeMode sind AddOns deaktiviert.

Beispiel: rex::isSafeMode() => true oder false

isSetup

Prüft, ob sich das System im Setup-Modus befindet. Der Wert kann in den Systemeinstellungen auf true gesetzt werden, was nur sehr, sehr ausnahmsweise notwendig sein sollte ...

Beispiel: rex::isSetup() => normalerweise false

removeConfig

Eine Config-Einstellung löschen.

Beispiel: rex::removeConfig('ein_konf_wert')

Siehe auch: getConfig, setConfig und hasConfig

removeProperty

Eine Eigenschaft löschen.

Beispiel: rex::removeProperty('myvar')

Siehe auch: getProperty, hasProperty und setProperty

setConfig

Eine Config-Einstellung setzen.

Beispiel: rex::setConfig('ein_konf_name','der_konf_value')

Siehe auch: getConfig, removeConfig und hasConfig

setProperty

Eine Eigenschaft setzen.

Beispiel: rex::setProperty('myvar','myval')

Siehe auch: getProperty, hasProperty und removeProperty

Siehe auch Konfiguration

Beispiele

Informationen aus Artikel im Template auslesen

Über Properties die im Namespace eines AddOns hinterlegt sind, lassen sich kann man Properties die in Modulen gesetzt wurden in Templates auslesen. Hierzu ist es erforderlich vor Abfrage der Variable den Artikel einzulesen, z. B. mittles $this->getArticle(); oder REX_ARTICLE[] .

Im gewünschten Modul wird mit

$project = rex_addon::get('project');
$project->setProperty('key',"wert")`

die gewünschte Information im project-AddOn hinterlegt.

Danach kann der Inhalt der Variable im Template ausgelesen werden

Ausgabe im Template

$article = $this->getArticle();
$project = rex_addon::get('project');

// ist eine Property gesetzt?
if ($project->getProperty('key') != "") {
echo '<title>'.rex_escape($project->getProperty('key')).'</title>';
}
// sonst:
else {
echo '<title>'. rex_escape($this->getValue('name')).'</title>';
}