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
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
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
Optionsname | Beschreibung |
---|---|
|
whitelist
Eine Liste aus Elementidentifikationen, gruppiert nach Elementtyp, welche aus dem aktuellen Formular ausgeschlossen werden sollen. Mit den Konstanten | |
| Siehe |
| Ein Array aus Feldidentifikatoren deren Eingabefelder als |
| Ein Array aus Feldidentifikatoren deren Eingabefelder als |
| Ein Array dessen Schlüssel Feldidentifikatoren sind und deren Werte als Werte für die aufzubauenden Eingabefelder genutzt werden. |
| Eine Vorlage welche für die Namen der zu erstellenden Eingabefelder genutzt wird. Hierbei wird der Platzhalter |
| Legt 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. |
| Legt 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. |
| Legt die initial ausgewählte Feldgruppe (Tab) fest. |
Einstellungskonstanten von FormBuilderStandard
Konstante | Beschreibung |
---|---|
| Die Eingabefelder werden direkt und ohne Gruppierung dargestellt. |
| Die Eingabefelder werden immer mit ihrer Gruppierung dargestellt. |
| Die Gruppierung der Eingabefelder wird dargestellt, sobald es mehr als eine Gruppierung gibt |
Aufbau des Plugins
...
. |
...
getFormByEntity
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.$entity
$iso639
de
).$values
$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
.
Info |
---|
Sind Werte in diesem Array vorhanden werden alle Felder, deren Identifikatoren sich nicht in diesem Array befinden, nicht in diesem Formular angezeigt. |
$blacklist
getListedColumnsByEntity
.$params
$engine
$pattern
%s
wird immer durch den Identifikator des Feldes ersetzt.getFormByFormMaskID
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.$id
$iso639
$iso639
bei der Methode getFormByEntity
.$values
$values
bei der Methode getFormByEntity
.$whitelist
$whitelist
bei der Methode getFormByEntity
.$blacklist
$blacklist
bei der Methode getFormByEntity
.$params
$params
bei der Methode getFormByEntity
.$engine
$engine
bei der Methode getFormByEntity
.$pattern
$pattern
bei der Methode getFormByEntity
.getListedColumnsByEntity
$blacklist
oder $whitelist
aus den zuvor beschriebenen Methoden verwendet können.$entity
$identifier
$type
\brandbox\component\form\engine::LIST_TYPE_BLACKLIST
und \brandbox\component\form\engine::LIST_TYPE_WHITELIST
zur Verfügung.getListedColumnsByFormMaskID
$blacklist
oder $whitelist
aus den zuvor beschriebenen Methoden verwendet können.$id
$identifier
$identifier
bei der Methode getListedColumnsByEntity
.$type
$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.
Codeblock | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
{
"identifier": "[Identifikator des Datenbankfeldes]",
// [...]
"configuration": {
// [...]
"whitelist": ["[Identifikator des Formulars]"],
"blacklist": ["[Identifikator des Formulars]"]
}
} |
Codeblock | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
blacklist:
- '[Identifkator des Formulars]'
whitelist:
- '[Identifkator des Formulars]' |
Beispiel
...
language | php |
---|---|
theme | RDark |
...
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.
Definition der Eingabefeldlisten
Codeblock | ||
---|---|---|
| ||
{
// ...
"[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 | ||
---|---|---|
| ||
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]")
; |