Dieses Codepaket wird von brandbox genutzt um Verbindungen zwischen Datensätzen zu verwalten und für einen Anwender zu visualisieren. Standardmäßig werden von diesem Codepaket die Relationsdefinitionen (Eltern-Kind-Beziehungen) von brandbox unterstützt. Über Events können aber weitere Datensatzverbindungen unterstzützt werden (bspw. Fremdschlüssel).
Codeblock |
---|
|
use Brandbox\Framework\Base\Relation;
$source = 'shopGroup'; // Identifikator der Quelldatenbanktabelle
$target = 'shopArticle'; // Identifikator der Zieldatenbanktabelle
$type = 'CustomRelation'; // Benutzerdefinierter Typ der Datensatzverbindung
$id = 123; // ID des Quelldatensatzes
$element = $this
->staticController(Relation\Manager::class)
->getButtonRelation($source, $target, $type, $id)
;
// $element ist null oder eine Instanz von \Brandbox\FrameworkStyleguide\Entity\FrameworkButton |
Funktionsumfang
Dieses Codepaket stellt eine Oberfläche innerhalb von Base zur Verfügung um Datensatzverbindungen in einer Datensatzliste darzustellen. Zudem werden Funktionen für das Erstellen, Ver- und Entknüpfen, Sortieren und Verschieben von Datensätzen angeboten. Die Oberfläche und Funktionen werden durch Events beeinflusst und enthalten immer alle Informationen (Quell- und Zieltabelle, Datensatzverbindungstyp, Quelldatensatz-ID). Alle verfügbaren Funktionen werden über die nachfolgenden Konstanten beschrieben.
Konstante | Beschreibung |
---|
Manager::ACTION_SORT | Beschreibt das Sortieren von einem oder mehreren Datensätzen über die Kontextmenüfunktion eines Datensatzes oder des Mehrfachfunktionsmenüs. Die Referenzeigenschaft enthält den vorherigen Datensatz nachdem alle gewählten Datensätze einsortiert werden sollen. |
Manager::ACTION_AFTER | Beschreibt das Sortieren von einem oder mehreren Datensätzen über die Drag&Drop-Funktion der Datensatzliste. Die Referenzeigenschaft enthält den vorherigen Datensatz nachdem alle gewählten Datensätze einsortiert werden sollen. |
Manager::ACTION_BEFORE | Beschreibt das Sortieren von einem oder mehreren Datensätzen über die Drag&Drop-Funktion der Datensatzliste. Die Referenzeigenschaft enthält den nachfolgenden Datensatz vordem alle gewählten Datensätze einsortiert werden sollen. |
Manager::ACTION_RELATE | Beschreibt das Verknüpfen von einem oder mehreren Datensätzen. |
Manager::ACTION_UNRELATE | Beschreibt das Entknüpfen/Lösen von einem oder mehreren Datensätzen. |
Kontextklassen
Diese Kontextklassen stehen in den genannten Komponenten zur Verfügung. Alle implementieren das gemeinsame ContextInterface
-Interface.
Klassenname | Beschreibung |
---|
ContainerContext | Kontextklasse für die Datensatzlistenkomponente |
RelationContext | Kontextklasse für das Kontextmenü eines Datensatzes |
ToolbarContext | Kontextklasse für die Toolbar der Verknüpfungsansicht |
TreeContext | Kontextklasse für die Baumansicht der Datensatzlisten |
Eventübersicht
Klassenname | Beschreibung |
---|
OnExecuteCreate | Wird ausgelöst sobald ein neuer Datensatz gespeichert wird, allerdings nur wenn die Bearbeitungsansicht zuvor über die Verknüpfungsansicht geöffnet wurde. |
OnExecuteExecute | Wird ausgelöst wenn eine Funktion der Verknüpfungsansicht ausgeführt wird. Über die Eigenschaft action wird die ausgeführte Funktion benannt. |
OnPopulateActions | Wird ausgelöst um Funktionsaktionen vor dem Ausführen der eigentlichen Aktion einzusammeln und optional dem Anwender zur Auswahl anzubieten. Die Funktionsaktionen sind ähnlich zu den Kopierfunktionen in Base. |
OnPopulateContainer | Wird ausgelöst um den FrameworkContainer innerhalb der Verknüpfungsansicht zu befüllen. |
OnPopulateIndex | Wird ausgelöst um die Verknüpfungsansicht selbst aufzubauen. |
OnPopulateQueryBuilder | Wird ausgelöst um die darzustellenden Datensätze zu filter und ggf. einzuschränken. Der QueryBuilder veweist hierbei auf die Zieldatenbanktabelle der Verknüpfungsansicht. Der aktuelle Zustand Ansichtumschalters kann mit nachfolgendem Code abgefragt werden. Codeblock |
---|
| use Brandbox\Framework\Base\Relation;
/** @var Relation\Lib\Event\OnPopulateQueryBuilder $event */
$status = $this
->staticController(Relation\Lib\Request\Settings::class)
->getSwitch($event->source, $event->target, $event->type, $event->id)
;
// $status kann einer der folgenden Konstanten entsprechen
// Relation\Manager::SWITCH_TYPE_RELATED
// Relation\Manager::SWITCH_TYPE_RELATABLE |
|
OnPopulateRelation | Wird ausgelöst um eine ggf. existierende Verknüpfung zwischen dem Quelldatensatz und einem der darzustellenden Zieldatensätze zu ermitteln. |
OnPopulateSettings | Wird ausgelöst um den Ansichteinstellungsanbieter für die Datensatzliste zu ermitteln. |