In diesem Tutorial erhalten Sie einen Überblick über die Widgets von brandbox sowie deren Einsatzzwecke mit Codebeispielen. Sie können weitere Informationen über die Widgets in der entsprechenden Entwicklerdokumentation finden.
Was sind Widgets?
Ein Widget wird in brandbox genutzt um Eingabefelder sowie deren Anordnung innerhalb von Sets und Gruppen zu beschreiben. Diese Definitionen werden unter anderem von den nachfolgenden Komponenten als Basis für deren Aufgaben eingesetzt:
Ein Widget basiert entweder auf einer klassischen Widgetdefinition (widget.json
) oder einer Strukturdefinition (structure.json
). Mit der Strukturmodellierung (ehemals Datenmodellierung) können die Widgets auch auf Basis einer benutzerdefinierten Konfiguration definiert werden. Zudem kann über die Strukturmodellierung oder eine Modellierungsdefinition (modelling.json
) eine klassische Widgetdefinition erweitert und verändert werden. Das nachfolgende Diagramm gibt Ihnen eine Übersicht über die Zusammenhänge und Abhängigkeiten der einzelnen Widgetbestandteile.
...
Ähnlich zur Strukturmodellierung kann eine Modellierungsdefinition genutzt werden um bereits existierende Tabellen zu erweitern. In einer Modellierungsdefinition können keine neuen Tabellen definiert werden. Zusammen mit der Eigenschaftserweiterung aus Doctrine können hiermit "echte" Tabellenspalten ergänzt werden. Wenn keine Eigenschaftserweiterung genutzt wird, muss das zu erweiternde Entity mindestens ein ODM-Entity sein.
Wann benötige ich eine Strukturdefinition?
Eine Strukturdefinition wird genutzt um ein Widget ohne Tabellenbezug zu definieren. Mögliche Einsatzzwecke sind Formulare in Modals.
Codebeispiele
Codeblock |
---|
language | php |
---|
title | Wie rufe ich eine Widgetdefinition ab? |
---|
collapse | true |
---|
|
use Brandbox\Framework\Brandbox\Widget;
$definition = $this
->staticController(Widget\Manager::class)
->getRepositoryWidget('CustomEntityIdentifier')
; |
Codeblock |
---|
language | php |
---|
title | Wie rufe ich eine Strukturdefinition ab? |
---|
collapse | true |
---|
|
use Brandbox\Framework\Brandbox\Widget;
$definition = $this
->staticController(Widget\Manager::class)
->getDefinitionWidget('brandbox/custom-app/src/Custom/Package/Lib/Structure/CustomDefinition.json')
; |
Codeblock |
---|
language | php |
---|
title | Wie erstelle ich ein Formular aus einem Widget? |
---|
collapse | true |
---|
|
use Brandbox\Framework\Component\Form;
$builder = $this
->staticController(Form\Manager::class)
->getStandardBuilder()
;
$builder->container = $definition;
$builder->prefix = 'CustomFormPrefix';
$builder->payloads = [
'FieldIdentifierA' => 'Eingabefeldwert A'
];
$element = $this
->staticController(Form\Manager::class)
->getFrameworkForm($builder)
; |
Codeblock |
---|
language | php |
---|
title | Wie validiere ich Werte mit einem Widget? |
---|
collapse | true |
---|
|
use Brandbox\Framework\Brandbox\Validator;
use Brandbox\Framework\Brandbox\Http;
use Validator\Lib\Struct\AdvancedValidatorTrait; // Trait für die Klasse
$response = new Http\Response\AdvancedResponseStack();
$context = new Validator\Lib\Struct\ValidatorContext();
$context->container = $definition;
$context->response = $response;
$context->payloads = [
'FieldIdentifierA' => 'Eingabefeldwert A'
];
if($this->validate($context)) {
// Validierung erfolgreich
} |
Codeblock |
---|
language | php |
---|
title | Wie transformiere ich Werte mit einem Widget? |
---|
collapse | true |
---|
|
use Brandbox\Framework\Brandbox\Validator;
use Brandbox\Framework\Brandbox\Casting;
$payloads = [
'FieldIdentifierA' => 'Eingabefeldwert A'
];
$readable = $this
->staticController(Casting\Manager::class)
->getHumanReadable($definition, $payloads)
; |