From 089e4305783ee7b301c7f5a1b5e6d6d638972f4c Mon Sep 17 00:00:00 2001 From: Ioannis Igoumenos Date: Thu, 14 May 2026 16:47:38 +0300 Subject: [PATCH] Breadcrumbs: fall back to conventional model inference when strict FK resolution fails --- app/src/Controller/Component/BreadcrumbComponent.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/Controller/Component/BreadcrumbComponent.php b/app/src/Controller/Component/BreadcrumbComponent.php index a7e3c9c82..f09080c69 100644 --- a/app/src/Controller/Component/BreadcrumbComponent.php +++ b/app/src/Controller/Component/BreadcrumbComponent.php @@ -119,9 +119,16 @@ public function beforeRender(EventInterface $event) { 'co_id' => method_exists($controller, 'getCOID') ? $controller->getCOID() : null ]; - // Use fully-qualified model name + // Use fully-qualified model name when possible (association-aware), + // but fail-soft for "filter params" like person_id/group_id on status pages. $requesterModel = StringUtilities::getQualifiedName($request->getParam('plugin'), $request->getParam('controller')); - $modelName = StringUtilities::foreignKeyToQualifiedModelName($queryParam, $requesterModel); + + try { + $modelName = StringUtilities::foreignKeyToQualifiedModelName($queryParam, $requesterModel); + } catch (\Throwable $e) { + // Fall back to conventional inference (eg: person_id -> People) + $modelName = StringUtilities::foreignKeyToClassName($queryParam); + } $this->injectPrimaryLink($link, true, null, $modelName); break; // Only inject the first matching parameter