# Form Schema ## Ort `config/form_schema.php` ## Struktur ```php [ '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.