YForm Submit-Button no_db Parameter
Quell-ID: GitHub Discussion #34
Use Case
Bei einem YForm-Formular soll der Submit-Button korrekt konfiguriert werden, insbesondere die no_db-Option.
Verwendete AddOns
- YForm
Problemstellung
Die Parameter-Reihenfolge beim Submit-Feld ist verwirrend und nicht immer klar dokumentiert.
Lösung
Pipe-Schreibweise
submit|submit|senden||1|
Die 1 an Position 5 aktiviert no_db.
PHP-Schreibweise
// Variante 1: Einfach
$yform->setValueField('submit', ['submit', 'senden', '', '1']);
// Variante 2: Mit allen Parametern
$yform->setValueField('submit', ['submit', 'senden', '', '', 'no_db', '']);
// Variante 3: Mit CSS-Klasse
$yform->setValueField('submit', ['submit', 'Anfrage senden', '', '', '', 'btn-secondary']);
Parameter-Übersicht
| Position | Name | Beschreibung |
|---|---|---|
| 1 | name | Feldname (meist ‘submit’) |
| 2 | label | Button-Beschriftung |
| 3 | value | Wert beim Absenden (optional) |
| 4 | - | (ungenutzt) |
| 5 | no_db | ‘1’ = nicht in Datenbank speichern |
| 6 | css_class | CSS-Klasse(n) für den Button |
Vollständiges Beispiel
<?php
$yform = new rex_yform();
$yform->setObjectparams('form_action', rex_getUrl());
// Formularfelder
$yform->setValueField('text', ['name', 'Name']);
$yform->setValueField('text', ['email', 'E-Mail']);
$yform->setValueField('textarea', ['message', 'Nachricht']);
// Submit-Button ohne Datenbank-Speicherung, mit Bootstrap-Klasse
$yform->setValueField('submit', [
'submit', // name
'Absenden', // label
'', // value
'', // (leer)
'1', // no_db
'btn btn-primary' // css_class
]);
echo $yform->getForm();
Besserer Ansatz: Lesbare Array-Notation
Für bessere Lesbarkeit kann ein assoziatives Array verwendet werden (erfordert Konvertierung):
<?php
// Helper-Funktion
function yformSubmit(array $config): array
{
return [
$config['name'] ?? 'submit',
$config['label'] ?? 'Absenden',
$config['value'] ?? '',
'',
$config['no_db'] ?? '',
$config['css_class'] ?? '',
];
}
// Verwendung
$yform->setValueField('submit', yformSubmit([
'name' => 'submit',
'label' => 'Jetzt absenden',
'no_db' => '1',
'css_class' => 'btn btn-lg btn-success',
]));
Pipe-Notation für Table Manager
Im YForm Table Manager (über die GUI) sieht die Definition so aus:
submit|submit|Speichern||1|btn btn-primary
Hinweis zur Dokumentation
Die offizielle Dokumentation zeigt:
$yform->setValueField('submit', array('submit', 'Anfrage senden', '', '', '', 'btn-secondary'));
Das no_db wird hier nicht explizit verwendet, da Submit-Felder standardmäßig nicht gespeichert werden sollten. Die explizite Angabe ist nur notwendig, wenn abweichendes Verhalten gewünscht ist.