Express Snippets¶
Verbindung zu Express aufbauen¶
use Concrete\Core\Support\Facade\Facade; // nur falls es $this->app im gegebenen Kontext nicht gibt!
use Concrete\Core\Express\ObjectManager;
// wenn $this->app im aktuellen Kontext gesetzt ist
$express = $this->app->make(ObjectManager::class);
// wenn $this->app im aktuellen Kontext nicht gesetzt ist
$app = Facade::getFacadeApplication();
$express = $app->make(ObjectManager::class);
Entity laden¶
// $express enthält das Express-ObjectManager-Object (s.o.)
$entity = $express->getObjectByHandle('entity_handle');
Einzelnen Datensatz laden¶
Mehrere Datensätze laden¶
if (is_object($entity)) {
// 3. Die EntryList (die Abfrage-Pipeline) für diese Entity erstellen
$entryList = new Concrete\Core\Express\EntryList($entity);
// 4. FILTER HINZUFÜGEN
// Syntax: filterBy + AttributHandleImCamelCase
// Wenn dein Attribut 'status' heißt:
$entryList->filterByStatus('aktiv');
$entryList->filterBy('status', 'aktiv');
// Wenn dein Attribut 'vorname' heißt und du nach "Max" suchst:
// $entryList->filterByVorname('Max');
// 5. SORTIERUNG HINZUFÜGEN
// Parameter 1: Das Attribut-Handle, Parameter 2: 'ASC' (aufsteigend) oder 'DESC' (absteigend)
$entryList->sortByLastname('ASC');
// 6. DATENSÄTZE AUSLESEN
// Holt die gefilterten und sortierten Einträge als Array ab
$entries = $entryList->getResults(); // array()
// 7. Durch die Datensätze schleifen und Werte ausgeben
foreach ($entries as $entry) {
// Um ein bestimmtes Attribut eines Datensatzes auszulesen:
$nachname = $entry->getAttribute('nachname');
$email = $entry->getAttribute('email');
echo "Eintrag: " . $nachname . " (" . $email . ")<br>";
}
} else {
echo "Die Entity wurde nicht gefunden!";
}
Feldwerte abrufen¶
$value = $entry->getFieldkey();
$value = $entry->getAttribute('fieldkey');
ID abrufen¶
Die ID ist CCMS-weit eindeutig, nicht nur in der einen Tabelle. Da sie kein Attribut ist, sondern ein interner Wert, kann sie nur so abgerufen werden:
$id = $entry->getID();
Filtern¶
Textfelder¶
$entryList->filterByFieldkey('value');
# oder
$entryList->filterBy('fieldkey', 'value');
Checkboxen (boolean)¶
# Check ist gechecked
$entryList->filterByFieldkey(1);
$entryList->filterByFieldkey(true);
# Checkbox ist nicht gechecked
$entryList->filterByFieldkey(0);
$entryList->filterByFieldkey(false);
Sortieren¶
$entryList->sortByFieldkey('ASC');
Beziehungen¶
1:n¶
$entity enthält die Quell-Entity
$entry enthält den Quell-Datensatz, zu dem die entfernten Datensätze abgerufen werden sollen.
entity_n ist die Kennung der entfernten Entity
# Entity der entfernten Tabelle laden und Liste erstellen
$entity_n = $express->getObjectByHandle('entity_n');
$list_n = new EntryList($entity_n);
# Kontraintuitiv: Die Beziehung zur lokalen Tabelle von der entfernten Tabelle aus laden!
$association = $entity_n->getAssociation('entity_1');
# Liste der entfernten Tabelle nach lokalem Datensatz filtern
$list->filterByAssociatedEntry($association, $entry);
# Datensätze auslesen
$entries_n = $list->getResults();