FORM_SCHEMA.md 1.5 KB

Form Schema

Ort

config/form_schema.php

Struktur

[
  'steps' => [
    [
      'title' => '...',
      'description' => '...',
      'fields' => [
        [
          'key' => 'feldname',
          'label' => 'Label',
          'type' => 'text|email|date|select|textarea|checkbox|file',
          'required' => true|false,
          'required_if' => ['field' => 'anderes_feld', 'equals' => 'Wert'],
          'options' => [['value' => 'x', 'label' => 'X']],
          'accept' => '.pdf,.jpg',
          'max_length' => 100,
          'max_size' => 10485760,
          'extensions' => ['pdf','jpg'],
          'mimes' => ['application/pdf','image/jpeg'],
        ]
      ]
    ]
  ]
]

Validierungslogik

  • required: true macht Feld immer verpflichtend.
  • required_if macht Feld verpflichtend, wenn Quellfeld exakt equals entspricht.
  • Upload-Pflicht wird gegen vorhandene Upload-Metadaten geprüft.

Upload-Verhalten

  • Original-Dateiname wird serverseitig bereinigt und erhalten.
  • Speichern in kurzem Random-Unterordner (rand8) zur Kollisionsvermeidung.
  • Metadaten werden im Draft/Submission JSON abgelegt.
  • Für jedes type: file Feld rendert das Frontend zwei Eingabepfade:
    • Datei auswählen (name = <field_key>)
    • Foto aufnehmen (name = <field_key>__camera, accept=image/*, capture=environment)
  • Backend priorisiert regulären Datei-Upload, verwendet sonst Kamera-Upload.
  • Upload wird direkt nach Auswahl ausgelöst; es gibt keinen separaten „Jetzt speichern“-Schritt mehr.