Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

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.

...

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

Info

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

...

Konfiguration von Eingabefeldlisten

Die Einstellungen für die Optionen whitelist, blacklist, readonly und disabled können unter anderem auch durch eine Konfiguration bei den Eingabefeldern definiert und über eine Methode in Component/Form abgerufen werden.

Codeblock
languagejs
themeRDark
titleDefinition der Eingabefeldlisten
{
	// ...

	"[whitelist|blacklist|readonly|disabled]": [
		"[Frei wählbarer Identifikator]"
	]

	// ...
}

Diese Definition kann direkt in den Strukturdateien von Component/Widget aber auch in der Feldkonfiguration der Datenmodellierung genutzt hinterlegt werden. Es können pro Option mehrere frei wählbare Identifikatoren konfiguriert werden. Diese auf diese Weise markierten Felder können mit dem folgenden Code aus einer Strukturdefinition abegrufen werden:

Codeblock
languagephp
themeRDark
use Brandbox\Framework\Component\Form;
use Brandbox\Framework\Component\Widget;

$container = $this
	->staticController(Widget\Manager::class)
	->getRepositoryWidget("Administrator")
;

// Die folgenden Konstanten stehen zur Verfügung:
//  - Form\Manager::TYPE_WHITELIST
//  - Form\Manager::TYPE_BLACKLIST
//  - Form\Manager::TYPE_READONLY
//  - Form\Manager::TYPE_DISABLED

$columns = $this
	->staticController(Form\Manager::class)
	->getListedColumns($container, "[Frei wählbarer Identifikator]", "[Eine der genannten Konstanten]")
;


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.

Codeblock
languagejs
themeRDark
titleHinterlegung in der widget.json
collapsetrue
{
    "identifier": "[Identifikator des Datenbankfeldes]",
	// [...]
	"configuration": {
		// [...]
		"whitelist": ["[Identifikator des Formulars]"],
		"blacklist": ["[Identifikator des Formulars]"]
	}
}
Codeblock
languageyml
themeRDark
titleHinterlegung in der Feldkonfiguration
collapsetrue
blacklist:
  - '[Identifkator des Formulars]'
whitelist:
  - '[Identifkator des Formulars]'

Beispiel

Codeblock
languagephp
themeRDark
// 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);