Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

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 beliebige Datensatzverbindungen unterstzützt hinzugefügt werden (bspw. Fremdschlüssel).

...

...

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.

KonstanteBeschreibung
Manager::ACTIONMETHOD_MOVEBeschreibt das Verschieben eines oder mehrerer Datensätze zwischen zwei verschiedenen Quelldatensätzen.
Manager::ACTIONMETHOD_SORTBeschreibt 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::ACTIONMETHOD_AFTERATTACHBeschreibt das Sortieren Verknüpfen 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::ACTIONMETHOD_BEFOREDETACHBeschreibt das Sortieren Entknüpfen/Lösen 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::ACTIONMETHOD_RELATECREATEBeschreibt das Verknüpfen von einem oder mehreren DatensätzenErstellen eines neuen Datensatzes innherlab der Datensatzverbindungen.
Manager::ACTIONMETHOD_UNRELATEEDITBeschreibt das Entknüpfen/Lösen von einem oder mehreren DatensätzenBearbeiten einer Datensatzverbindung.

Kontextklassen

Diese Kontextklassen stehen in den genannten Komponenten zur Verfügung. Alle implementieren das gemeinsame ContextInterface-Interface.

KlassennameBeschreibung
ContainerContextContextContainerKontextklasse für die Datensatzlistenkomponente
RelationContextKontextklasse für das Kontextmenü eines Datensatzes
ToolbarContextContextToolbarKontextklasse für die Toolbar der VerknüpfungsansichtTreeContextKontextklasse für die Baumansicht der Datensatzlisten

Eventübersicht

KlassennameBeschreibung
OnExecuteCreateOnExecuteAttachWird ausgelöst sobald ein neuer Datensatz gespeichert wird, allerdings nur wenn die Bearbeitungsansicht zuvor über die Verknüpfungsansicht geöffnet wurde.
OnExecuteExecuteWird ausgelöst wenn eine Funktion der Verknüpfungsansicht ausgeführt wird. Über die Eigenschaft action wird die ausgeführte Funktion benannt.
OnPopulateActionsWird 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.
OnPopulateContainerWird ausgelöst um den FrameworkContainer innerhalb der Verknüpfungsansicht zu befüllen.
OnPopulateIndexWird ausgelöst um die Verknüpfungsansicht selbst aufzubauen.
OnPopulateQueryBuilderWird 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 für einen oder mehrere Datensätze ausgelöst, welche der Datensatzverbindung hinzugefügt werden sollen.
OnExecuteDetachWird für einen oder mehrere Datensätze ausgelöst, welche aus der Datensatzverbindung entfernt werden sollen.
OnExecuteMoveWird für einen oder mehrere Datensätze ausgelöst, welche zwischen zwei Verbindungsdefinitionen verschoben werden sollen.
OnExecuteSortWird für einen oder mehrere Datensätze ausgelöst, welche innerhalb einer Datensatzverbindung sortiert werden sollen.
OnPopulateBuilder

Wird ausgelöst um den QueryBuilder für die Datensatzliste zu befüllen. Der aktuelle Zustand der Datensatzliste kann hierbei mit dem folgenden Code abgerufen werden.

Codeblock
theme
languagephpRDark
use Brandbox\Framework\Base\Relation;

/** @var Relation\Lib\Event\OnPopulateQueryBuilderOnPopulateBuilder $event */

$status$type = $this
    ->staticController(Relation\Lib\Request\SettingsStorage::class)
    ->getSwitch>getType($event->source, $event->target, $event->type, $event->id>definition)
;

// $status kann einer der folgenden Konstanten entsprechen
// Relation\Manager::SWITCH_TYPE_RELATEDATTACHED
// Relation\Manager::SWITCH_TYPE_RELATABLE
OnPopulateRelationWird ausgelöst um eine ggf. existierende Verknüpfung zwischen dem Quelldatensatz und einem der darzustellenden Zieldatensätze zu ermitteln
TYPE_ATTACHABLE


OnPopulateContainerWird ausgelöst um den FrameworkContainer innerhalb der Verknüpfungsansicht zu befüllen.
OnPopulateCountWird ausgelöst um die Verbindungsanzahl eines Datensatzes einzusammeln. Diese Information kann für jeden Datensatz abgefragt werden.
OnPopulateCreateWird ausgelöst um den Dialog zum Erstellen eines neuen Datensatzes zu befüllen.
OnPopulateEditWird ausgelöst um die Oberflächennavigation beim Bearbeiten eines Verbindungsdatensatzes aufzulösen.
OnPopulateEntitiesWird ausgelöst um die darzustellenden Datensätze der Datensatzliste vor ihrer Ausgabe zu verändern.
OnPopulateFlagsWird ausgelöst um die verfügbaren Funktionen für eine Datensatzverbindung oder Verbindungsdefinition einzusammeln. Diese Funktionen werden mit den Relation\Manager::FLAG_-Konstanten beschrieben.
OnPopulateIndexWird ausgelöst um die Verknüpfungsansicht selbst aufzubauen.
OnPopulateReferencesWird ausgelöst um die verbundenen Datensätze eines Definition einzusammeln.
OnPopulateSettingsWird ausgelöst um den Ansichteinstellungsanbieter für die Datensatzliste zu ermitteln.

Drawio
bordertrue
diagramNameVerknüpfungen (Eventübersicht)
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth681
revision12