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 |
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 |
Codeblock | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
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 |
Codeblock | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
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 |
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.