submit_form_answer
Formular-Antwort SPEICHERN oder ABSENDEN. form_udid aus list_formdefs, answer_udid aus prepare_form_answer. OHNE answer_udid wird eine NEUE Antwort angelegt. 'values' = {feld-key: wert}, Keys aus show_formdef, Werte muessen die Feldregeln erfuellen (Select: nur erlaubte Optionswerte). SUBFORM/EINZELPOSTEN: ein Subform-Feld bekommt eine LISTE von Zeilen-Objekten, z.B. {"materialverbraucht": [{"material": "Bettlaken", "quantity": "1", "unit": "Stk"}, {...}]} — die Feld-Keys der Zeilen stehen im subform.fields der formdef (show_formdef). Skalare Felder bleiben einfach. 'status': 'draft' (speichern) oder 'sent' (absenden; committet in den target_scope der Action). VERHALTEN DER VALIDIERUNG: jeder Regelverstoss bricht mit HTTP 400 ab und liefert die Fehler je Feld ({errors:[{key,msg}]}) - es wird dann NICHTS gespeichert. Genau damit testest du ein Formular fachlich durch: gueltige Werte senden und pruefen, ob sie ankommen; ungueltige Werte senden und pruefen, ob die Regeln greifen. Eine einmal mit 'sent' abgesendete Antwort ist gesperrt (erneutes Absenden legt eine neue Antwort an).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | WICHTIG BEIM ABSENDEN: waehlt den konfigurierten Button der formdef. Format 'button:<index>' — der Index zeigt in formdef.buttons[] (Reihenfolge wie in show_formdef, erster Button = 0). NUR ein Button vom Typ 'send' loest den Mailversand (inkl. PDF-Anhang) aus; ein Button vom Typ 'saveandgoto' leitet auf eine feste URL weiter. Ohne 'action' wird nur gespeichert — dann geht KEINE Mail raus, auch wenn status='sent' gesetzt ist. Empfaenger/Betreff stehen in der formdef (Config), NICHT hier — sie sind bewusst nicht per Request aenderbar. | |
| status | No | 'draft' (speichern) oder 'sent' (absenden) | |
| values | No | {feld-key: wert}, Keys aus show_formdef. Subform-Felder: Liste von Zeilen-Objekten [{feld: wert, ...}] (Feld-Keys aus subform.fields der formdef). | |
| form_udid | Yes | Formdef-udid (32-hex) aus list_formdefs | |
| answer_udid | No | Antwort-udid aus prepare_form_answer |