1
0
Files
breadcrumb-the-shire/docs/benutzerdefinierte-felder.md

83 lines
2.4 KiB
Markdown
Raw Normal View History

# Benutzerdefinierte Felder (V1) Kurzreferenz
Letzte Aktualisierung: 2026-02-21
## Ziel
Tenant-spezifische Zusatzfelder für User:
- Definitionen und Optionen werden pro Tenant gepflegt.
- Werte werden pro User gespeichert.
- Address-Book-Filter nutzen dynamische Query-Parameter.
## Berechtigungen
- `custom_fields.manage`
- Definitionen/Optionen im Tenant-Tab pflegen.
- `custom_fields.edit_values`
- Werte im User-Tab pflegen.
## Tabellen
- `tenant_custom_field_definitions`
- Felddefinition pro Tenant (Label, Typ, aktiv, filterbar, `field_key` intern).
- `tenant_custom_field_options`
- Optionen für `select`/`multiselect` je Definition.
- `user_custom_field_values`
- Gespeicherter Wert pro `user_id + definition_id` (unique).
- `user_custom_field_value_options`
- N:M-Optionen für Multiselect-Werte.
## Typen und Verhalten
- `text`, `textarea`
- Eingabe am User möglich.
- Nicht als Address-Book-Filter zugelassen.
- `select`, `multiselect`, `boolean`, `date`
- Eingabe am User möglich.
- Optional als Address-Book-Filter (wenn `is_filterable=1`).
## Wichtige Regeln
- `field_key`
- Wird serverseitig aus Label erzeugt und tenant-weit eindeutig gehalten.
- Kein manuelles UI-Feld.
- User-Werte sind in V1 optional (keine Pflichtvalidierung).
- Bei Tenant-Wechsel am User werden Werte außerhalb der aktuellen User-Tenants bereinigt.
## Query-Parameter im Address Book
- `cf_<definition_uuid>`
- scalar/select/boolean
- `cfm_<definition_uuid>`
- multiselect (CSV mit Option-IDs)
- `cfd_<definition_uuid>_from`
- `cfd_<definition_uuid>_to`
- date-range
Unbekannte/manipulierte Parameter werden ignoriert.
## Relevante Pfade
- Tenant-Tab Formular:
- `/pages/admin/tenants/_form.phtml`
- Tenant Actions:
- `/pages/admin/tenants/custom-field-create($id).php`
- `/pages/admin/tenants/custom-field-update($id).php`
- `/pages/admin/tenants/custom-field-delete($id).php`
- User-Werte:
- `/lib/Service/CustomField/UserCustomFieldValueService.php`
- `/lib/Repository/CustomField/*`
- Address-Book-Filter:
- `/pages/address-book/index().php`
- `/pages/address-book/index(default).phtml`
## Troubleshooting (kurz)
- Multiselect speichert nichts:
- Feldname ohne doppeltes `[]` prüfen.
- Optionen sind leer:
- Label-Key für MultiSelect auf `label`/`description` prüfen.
- Filterbar ist deaktiviert:
- Typ ist nicht in `select|multiselect|boolean|date`.