Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 5 Nächste Version anzeigen »

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.

Abrufen einer Widgetdefinition
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.

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

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.


  • Keine Stichwörter