Versionen im Vergleich

Schlüssel

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

Ein Widget wird in brandbox zur Definition von Eingabefeldern, Gruppen, Sets, Datenbanktabellen, Relationen und Strukturen genutzt, um auf diese im Code programmatisch zugreifen zu können. Die Datenmodellierung erweitert Widget um eine neue Definition für Formularmasken und bietet zudem die Möglichkeit bestehende Definitionen über Datenpflege zu verändern/erweitern.

Info

Die Definitionen werden in einem persistenten Cache zwischengespeichert um die Performance zu verbesseren. Dieser Cache nutzt der Namespace brandbox/framework~widget, welcher sowohl über die Administrationsoberfläche als auch programmatisch geleert werden kann.

Definition per widget.json

Über eine widget.json, welche pro Codepaket erstellt werden kann, werden die in diesem Codepaket vorhandenen Datenbanktabellen sowie die Beziehung zwischen Datenbanktabellen definiert. Diese Dateien werden automatisch durch brandbox verarbeitet und im o.g. Cache zwischengespeichert.

Info

Eine widget.json muss dem in framework/resources/widget-schema.json beschriebenen JSON-Schema folgen. Eine Entwicklungsumgebung wie bspw. PHPStorm verfügt über eine einfache Validierungmöglichkeit für die Schemata.


Abrufen einer Widgetdefinition
Codeblock
theme
languagephpRDark
titleAbrufen einer Widgetdefinition
collapsetrue
use Brandbox\Framework\Component\Widget;

$definition = $this
	->staticController(Widget\Manager::class)
	->getPackageWidget('Custom/Package')
;

// Die Definition einer Datenbanktabelle kann aber auch direkt anhand ihres Identifikators abgerufen werden ...
$definition = $this
	->staticController(Widget\Manager::class)
	->getRepositoryWidget('CustomEntityIdentifier')
;

Definition per structure.json

Eine Strukturdefinition ist anders als eine Widgetdefinition nicht direkt an ein Codepaket gebunden, wird aber ebenfalls innerhalb eines Codepaket abgelegt. Es können allerdings beliebig viele Strukturdefinition pro Codepaket erstellt werden.

Info

Strukturdefinition sollten innerhalb eines Codepakets immer im Ordner Lib/Structure/ abgelegt werden und eine eindeutigen Namen tragen. Zudem müssen diese Definitionen dem in framework/resources/structure-schema.json definierten JSON-Schema folgen.


Abrufen einer Strukturdefinition
Codeblock
languagephp

...

...

use Brandbox\Framework\Component\Widget;

$definition = $this
	->staticController(Widget\Manager::class)
	->getDefinitionWidget('[Pfad zur Strukturdefinition ohne Hauptverzeichnis (/var/www/)]')
;

Definition per modelling.json

Die Modellingdefinition ist sehr ähnlich zur Strukturdefinition, sie wird allerdings zur Erweiterung von bereits existierenden Widgetdefinitionen genutzt und daher sehr ähnlich zur Datenmodellierung in brandbox. Jedes Codepaket kann eine modelling.json enthalten. Diese muss, wie die widget.json, im Hauptverzeichnis des Codepakets abgelegt werden.

Info

Die Modellingdefinitionen folgen dem framework/resources/modelling-schema.json in definierten JSON-Schema.

Alle modelling.json-Dateien werden beim Aufbau des Widgetcaches eingelesen und mit der exitierenden Widgetstruktur vermischt. Es gibt keine programmatische Zugriffsmöglichkeit auf diese Struktur.