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