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.