forked from fa/breadcrumb-the-shire
2.4 KiB
2.4 KiB
Benutzerdefinierte Felder (V1) Kurzreferenz
Letzte Aktualisierung: 2026-03-06
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_keyintern).
- Felddefinition pro Tenant (Label, Typ, aktiv, filterbar,
tenant_custom_field_options- Optionen für
select/multiselectje Definition.
- Optionen für
user_custom_field_values- Gespeicherter Wert pro
user_id + definition_id(unique).
- Gespeicherter Wert pro
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>_fromcfd_<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.
- Feldname ohne doppeltes
- Optionen sind leer:
- Label-Key für MultiSelect auf
label/descriptionprüfen.
- Label-Key für MultiSelect auf
- Filterbar ist deaktiviert:
- Typ ist nicht in
select|multiselect|boolean|date.
- Typ ist nicht in