Formular-Layout-Optionen
Drei Möglichkeiten, die Felder eines Erstellen-/Bearbeiten-Formulars anzuordnen, plus der clientseitige Umschalter dafür, wie dieses Formular auf dem Bildschirm dargestellt wird.
Der einfache Standard
Ganz ohne Layout-Konfiguration wird jedes bearbeitbare Feld eines pro Zeile gerendert, von oben nach unten, in der natürlichen Spaltenreihenfolge der Tabelle (oder der Reihenfolge von fields(), falls Sie diese aufgerufen haben). Das erfordert keinerlei Einrichtung und ist die richtige Wahl für kurze Formulare:
$xcrud = Xcrud::get_instance();
$xcrud->table('customers');
$xcrud->route('customers');
echo $xcrud->render();
rows() - Felder nebeneinander
rows($row, $fields) platziert zwei oder mehr Felder auf derselben nummerierten Zeile des Formulars, statt sie zu stapeln. Jedes Feld, das sich eine Zeile teilt, splittet deren volle Breite gleichmäßig auf:
$xcrud->rows(1, 'firstName,lastName');
$xcrud->rows(2, 'city,state,zip');
$row ist eine Zeilenposition, kein Index nach Deklarationsreihenfolge - Zeilen werden in aufsteigender numerischer Reihenfolge gerendert, unabhängig davon, welcher rows()-Aufruf in Ihrem PHP zuerst kam. Ein Feld gehört zu höchstens einer Zeile; ein erneuter rows()-Aufruf dafür verschiebt es, statt es zu duplizieren. Zeilen sind unabhängig von jedem anderen Layout unten und lassen sich frei damit kombinieren.
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
$row | int | erforderlich | Zeilenposition (1 oder größer); Zeilen werden in aufsteigender numerischer Reihenfolge gerendert |
$fields | string | erforderlich | Kommagetrennte Liste bearbeitbarer Feldnamen, die auf dieser Zeile platziert werden |
rows() + aside() - eine dauerhafte Seitenspalte
aside($fields) zieht Felder vollständig aus dem Hauptformularfluss heraus in eine separate Spalte, die daneben sichtbar bleibt, während alles andere - einfache Felder, rows()-Paare, was auch immer übrig bleibt - den Hauptbereich belegt. Häufig wird sie mit rows() kombiniert, damit der Hauptbereich kompakt bleibt und die Seitenspalte Uploads oder sekundäre Felder aufnimmt:
$xcrud->rows(1, 'firstName,lastName');
$xcrud->rows(2, 'city,state,zip');
$xcrud->aside('photo,attach');
Aside-Felder stapeln sich von oben nach unten in der Reihenfolge, die die eigene Feldliste des Formulars bereits vorgibt - es gibt nur eine Aside-Spalte, also keine Zeilennummer, die man ihr geben könnte. Hinweis: Bei einer Tabelle, die auch https://xcrudnova.xcrud.net/docs/de/nested-tables-overview verwendet, bleibt die Aside-Spalte nur innerhalb des eigenen "Details"-Tab-Panels des übergeordneten Datensatzes, nicht über alle Nested-Tabs hinweg.
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
$fields | string | erforderlich | Kommagetrennte Liste bearbeitbarer Feldnamen, die in die Seitenspalte gezogen werden |
Der Bearbeitungsmodus-Umschalter (clientseitig)
Unabhängig davon, wie die eigenen Felder eines Formulars angeordnet sind, steuert set_edit_mode($mode), wie das Formular selbst dargestellt wird, wenn eine Zeile zum Hinzufügen/Bearbeiten geöffnet wird:
$xcrud->set_edit_mode('side');
| Modus | Beschreibung |
|---|---|
modal | Zentriertes Popup-Dialogfeld über dem Grid (der Standard) |
side | Vom Bildschirmrand einschiebendes Drawer-/Offcanvas-Panel |
current | "Normal" - das Formular ersetzt das Grid inline, direkt auf der Seite selbst |
Zwei weitere Modi existieren, sind aber reines JS - dafür gibt es keinen set_edit_mode()-Wert, nur das "⋯ Weitere Optionen"-Menü der Toolbar (siehe https://xcrudnova.xcrud.net/docs/de/grid-toolbar-and-more-options-menu) kann sie zur Laufzeit erreichen:
| Modus | Beschreibung |
|---|---|
split_left | Grid und Formular nebeneinander angezeigt, Formular links angedockt, in einer größenverstellbaren Splitansicht |
split_right | Dieselbe Splitansicht, Formular stattdessen rechts angedockt |
Anders als modal/side verstecken oder überdecken die Split-Modi das Grid nie - dessen Datentabelle wird lediglich schmaler und bleibt vollständig klickbar, während eine Zeile daneben bearbeitet wird.