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