2.0 KiB
2.0 KiB
Globale Suche erweitern
Letzte Aktualisierung: 2026-03-06
Ziel
Neue Search-Resource korrekt in Aside-Preview und Vollsuche integrieren.
Architektur
Zwei Endpunkte teilen dieselbe Konfiguration:
- Aside-Preview:
pages/admin/search/data().php - Vollsuche:
pages/search/data().php
Zentrale Fassade:
lib/Support/SearchConfig.php- Laufzeit-Orchestrierung:
lib/Service/Search/SearchDataService.php - SQL-Ausführung:
lib/Repository/Search/SearchQueryRepository.php
Provider:
- SQL-Definitionen:
SearchSqlResourceProvider - UI-Meta (Icons/URLs):
SearchUiMetaProvider - Mapping:
SearchItemMapperProvider - Spezialquellen (
docs,hotkeys):SearchSpecialResourceProvider
Laufzeitpfad
pages/admin/search/data().phpoderpages/search/data().phpSearchDataServicebaut Scope/Permission + Resource-IterationSearchQueryRepositoryführtcountSql/previewSql/resultSqlausSearchConfigmapped auf API/UI-Items
Standardablauf für neue Resource
- Resource in
SearchSqlResourceProvider::resources()ergänzen:key,label,permissioncountSql,previewSql,resultSql
- Bei Tenant-Daten
tenantScopeFilters()ergänzen. - UI ergänzen:
iconForKey()listUrl()
- Mapping ergänzen:
mapPreviewItem()mapResultItem()
- Aside-Eintrag in
templates/partials/app-main-aside.phtmlergänzen (data-search-key). - i18n-Labels prüfen.
Wichtige Regeln
- Permission immer serverseitig in der Resource setzen.
- Tenant-Scope nicht nur im UI lösen.
- Preview immer mit
limit ?und ohne sensitive Daten.
Docs-Resource
Die Entwicklerdoku läuft als Spezialresource docs:
- Quelle:
DocsCatalogService::search() - Permission:
docs.view - Ziel:
admin/docs/{slug}#anchor
Check vor Merge
php -l lib/Support/SearchConfig.phpphp -l lib/Support/Search/*.php- Preview testen (
admin/search/data?q=...) - Vollsuche testen (
/search?search=...) - Permission/Scope mit reduziertem User prüfen