return Profiler::
trace('navigation-route',
function D
) use ($activeId,
$rootId,
$request,
$context,
$criteria) { if ($context->
hasState(...
$this->states
)) { return $this->
getDecorated()->
load($activeId,
$rootId,
$request,
$context,
$criteria);
} $depth =
$request->query->
getInt('depth',
$request->request->
getInt('depth', 2
));
// first we load the base navigation, the base navigation is shared for all storefront listings
$response =
$this->
loadNavigation($request,
$rootId,
$rootId,
$depth,
$context,
$criteria,
[self::ALL_TAG, self::BASE_NAVIGATION_TAG
]);
// no we have to check if the active category is loaded and the children of the active category are loaded
if ($this->
isActiveLoaded($rootId,
$response->
getCategories(),
$activeId)) { return $response;
} // reload missing children of active category, depth 0 allows us the skip base navigation loading in the core route
$active =
$this->
loadNavigation($request,
$activeId,
$rootId, 0,
$context,
$criteria,
[self::ALL_TAG
]);
$response->
getCategories()->
merge($active->
getCategories());
return $response;
});
}