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 3 Nächste Version anzeigen »

Mit Component/Form können aus den Strukturdefinition von Component/Widget und der Datenmodellierung Formulare erzeugt werden. Durch einen FormBuilder kann das entstehende Formular beeinflusst und verändert werden.

Erzeugen eines Formulares
use Brandbox\Framework\Component\Widget;
use Brandbox\Framework\Component\Form;

$builder = $this
	->staticController(Form\Manager::class)
	->getStandardBuilder()
;

$builder->prefix = '...'; // Eindeutiger Identifikator für dieses Formular (bspw. uniqid())
$builder->container = $this
	->staticController(Widget\Manager::class)
	->getRepositoryWidget('Administrator')
;

$form = $this
	->staticController(Form\Manager::class)
	->getFrameworkForm($builder)
;

Weitere Optionen von FormBuilderStandard

OptionsnameBeschreibung
blacklistEin Array aus Feldidentifikatoren welche nicht im entstehenden Formular erscheinen sollen.
whitelistEin Array aus Feldidentifikatoren welche im entstehenden Formular erscheinen sollen. Sobald diese Option gesetzt wurde, werden nur die hier enthaltenen Eingabefelder erscheinen.
readonlyEin Array aus Feldidentifikatoren deren Eingabefelder als readonly markiert werden sollen. Nicht alle Eingabefelder unterstützen diese Option.
disabledEin Array aus Feldidentifikatoren deren Eingabefelder als disabled markiert werden sollen. Nicht alle Eingabefelder unterstützen diese Option.
payloads

Ein Array dessen Schlüssel Feldidentifikatoren sind und deren Werte als Werte für die aufzubauenden Eingabefelder genutzt werden.

patternEine Vorlage welche für die Namen der zu erstellenden Eingabefelder genutzt wird. Hierbei wird der Platzhalter %s durch den Identifikator des Eingabefeldes ersetzt.
setsLegt die Darstellung der Sets fest. Sets enthalten eines oder mehrere Eingabefelder welcher mit einer Überschrift versehen werden können. Siehe "Einstellungskonstanten" weiter unten für mögliche Optionen.
tabsLegt die Darstellung von Gruppen fest. Eine Gruppe enthält eines oder mehrere Eingabefelder sowie ein oder mehrere Sets. In einem Formular werden Gruppen als Tabs dargestellt. Siehe "Einstellungskonstanten" weiter unten für mögliche Optionen.

Einstellungskonstanten von FormBuilderStandard

KonstanteBeschreibung
FormBuilderStandard::SETTING_NONEDie Eingabefelder werden direkt und ohne Gruppierung dargestellt.
FormBuilderStandard::SETTING_FORCEDie Eingabefelder werden immer mit ihrer Gruppierung dargestellt.
FormBuilderStandard::SETTING_DEFAULTDie Gruppierung der Eingabefelder wird dargestellt, sobald es mehr als eine Gruppierung gibt.

Aufbau des Plugins

Dem Programmierer stehen die in der nachfolgenden Tabelle beschriebenen öffentlichen Methoden in der Klase \brandbox\component\form\engine zur Verfügung.

MethodeParameterBeschreibung
getFormByEntityLiefert eine nicht vollständig konfigurierte Datenklasse welche für das Styleguide-Formular (form) genutzt werden kann. Diese Datenklasse verfügt über weitaus mehr Eigenschaften als diese Methode befüllt. Eine vollständige Konfiguration muss daher durch den Entwickler stattfinden.
$entityEine Doctrine-Entity einer bestimmtem Tabelle aus welcher das Formular generiert werden soll.
$iso639Der zweistellige Ländercode welcher für die Übersetzung des Formulars genutzt werden soll (bspw. de).
$valuesEin Array mit Werten welche vorab in die Felder des Formulars gefüllt werden. Der Schlüssel des Arrays entspricht dem Identifikator des Feldes und der Wert aus dem Array dem Wert welcher in das Formularfeld gefüllt wird.
$whitelist

Ein Array mit Identifikatoren von Feldern welche in diesem Formular gezeigt werden sollen. Ein solches Array erhält unter anderem über die Methode getListedColumnsByEntity.

Sind Werte in diesem Array vorhanden werden alle Felder, deren Identifikatoren sich nicht in diesem Array befinden, nicht in diesem Formular angezeigt.

$blacklistEin Array mit Identifikatoren von Feldern welche nicht in diesem Formular erscheinen sollen. Ein solches Array erhält man beispielsweise über die Methode getListedColumnsByEntity.
$paramsEin Array mit Parametern welche den Eingabefeldern zur Verfügung stehen.
$engineEine Plugin welches den Eingabefeldern mitgegeben wird.
$patternEin Muster welches für die Namen der Felder innerhalb des Formulars genutzt werden sollen. Der Platzhalter %s wird immer durch den Identifikator des Feldes ersetzt.
getFormByFormMaskIDLiefert eine nicht vollständig konfigurierte Datenklasse welche für das Styleguide-Formular (form) genutzt werden kann. Diese Datenklasse verfügt über weitaus mehr Eigenschaften als diese Methode befüllt. Eine vollständige Konfiguration muss daher durch den Entwickler stattfinden.
$idDie Datensatz-ID der entsprechenden Formularmaske aus der Datenmodellierung.
$iso639Siehe Beschreibung von $iso639 bei der Methode getFormByEntity.
$valuesSiehe Beschreibung von $values bei der Methode getFormByEntity.
$whitelistSiehe Beschreibung von $whitelist bei der Methode getFormByEntity.
$blacklistSiehe Beschreibung von $blacklist bei der Methode getFormByEntity.
$paramsSiehe Beschreibung von $params bei der Methode getFormByEntity.
$engineSiehe Beschreibung von $engine bei der Methode getFormByEntity.
$patternSiehe Beschreibung von $pattern bei der Methode getFormByEntity.
getListedColumnsByEntityLiefert ein Array aus Feldidentifikatoren welche entweder für den Parameter $blacklist oder $whitelist aus den zuvor beschriebenen Methoden verwendet können.
$entityEine Doctrine-Entity aus der Felder entsprechend gefiltert werden sollen.
$identifierEin eindeutiger Formular-Identifikator. Eine genauere Beschreibung dieses Identifikators ist unter dem Punkt Konfiguration zu finden.
$typeDer genutzte Typ für den Filter. Es stehen die Konstanten \brandbox\component\form\engine::LIST_TYPE_BLACKLIST und \brandbox\component\form\engine::LIST_TYPE_WHITELIST zur Verfügung.
getListedColumnsByFormMaskIDLiefert ein Array aus Feldidentifikatoren welche entweder für den Parameter $blacklist oder $whitelist aus den zuvor beschriebenen Methoden verwendet können.
$idDie Datensatz-ID der Formularmaske aus der Datenmodellierung.
$identifierSiehe Beschreibung von $identifier bei der Methode getListedColumnsByEntity.
$typeSiehe Beschreibung von $type bei der Methode getListedColumnsByEntity.

Konfiguration

Um ein Formular aus einem Doctrine-Entity oder einer Formularmaske zu generieren ist grundsätzliche keine zusätzliche Konfiguration für dieses Plugin erforderlich. Werde jedoch die Black- bzw. Whitelist verwendet, so müssen die Felder des Entities oder der Formularmaske entsprechend gekennzeichnet werden. Die Methoden getListedColumnsByEntity und getColumnsByFormMaskID besitzen den Parameter $identifier. Dieser stellt eine eindeutige Identifikation eines Formulars dar und kann durch den Programmierer bzw. den Anwender frei gewählt werden. Dieser Identifikator kann bei jedem betroffenen Feld hinterlegt werden und bestimmt ob dieses Feld freigegeben ist oder nicht.

Hinterlegung in der widget.json
{
    "identifier": "[Identifikator des Datenbankfeldes]",
	// [...]
	"configuration": {
		// [...]
		"whitelist": ["[Identifikator des Formulars]"],
		"blacklist": ["[Identifikator des Formulars]"]
	}
}
Hinterlegung in der Feldkonfiguration
blacklist:
  - '[Identifkator des Formulars]'
whitelist:
  - '[Identifkator des Formulars]'

Beispiel

// Abrufen eines leeren Doctrine-Entities
$entity = $this
	->getRepository(myDoctrineEntity::class)
	->getEntity(0)
;

// Abrufen der Black- und Whitelist
$engine = $this->getAppFactory(\brandbox\component\form\engine::class);

$whitelist = $engine->getListedColumnyByEntity($entity, '[Identifikator des Formulars]', $engine::LIST_TYPE_WHITELIST);
$blacklist = $engine->getListedColumnyByEntity($entity, '[Identifikator des Formulars]', $engine::LIST_TYPE_BLACKLIST);

// Abrufen des Formulars
$iso639 = $this->getApplicationLanguage();
$values = [];
$pattern = '%s';

$form = $engine->getFormByEntity($entity, $iso639, $values, $whitelist, $blacklist, $pattern);
  • Keine Stichwörter