Error 404 Not Found

GET https://abb-dev.tech/navigation/57f4d3f5cf7c426abd6325d7881fd84b

Forwarded to ErrorController (6f1202)

Exceptions

Category "57f4d3f5cf7c426abd6325d7881fd84b" not found.

Shopware\Core\Content\Category\Exception\ CategoryNotFoundException

Show exception properties
0 of 0
Shopware\Core\Content\Category\Exception\CategoryNotFoundException {#4182 â–¼ -statusCode: 404 -headers: [] #parameters: array:1 [â–¶ "categoryId" => "57f4d3f5cf7c426abd6325d7881fd84b" ] }
  1. return new PageNotFoundException($pageId);
  2. }
  3. public static function categoryNotFound(string $id): ShopwareHttpException
  4. {
  5. return new CategoryNotFoundException($id);
  6. }
  7. public static function serviceCategoryNotFoundForSalesChannel(string $salesChannelName): self
  8. {
  9. return new self(
  1. * @return CategoryMetaInformation
  2. */
  3. private function getMetaInfoById(string $id, array $metaInfo): array
  4. {
  5. if (!\array_key_exists($id, $metaInfo)) {
  6. throw CategoryException::categoryNotFound($id);
  7. }
  8. return $metaInfo[$id];
  9. }
  1. ): NavigationRouteResponse {
  2. $depth = $request->query->getInt('depth', $request->request->getInt('depth', 2));
  3. $metaInfo = $this->getCategoryMetaInfo($activeId, $rootId);
  4. $active = $this->getMetaInfoById($activeId, $metaInfo);
  5. $tags = [
  6. self::buildName($context->getSalesChannelId()),
  7. self::buildName($activeId),
  8. ];
  1. $value = $this->cache->get($key, function (ItemInterface $item) use ($active, $depth, $rootId, $request, $context, $criteria, $tags) {
  2. $request->query->set('depth', (string) $depth);
  3. $name = self::buildName($active);
  4. $response = $this->tracer->trace($name, fn () => $this->getDecorated()->load($active, $rootId, $request, $context, $criteria));
  5. $item->tag($this->generateTags($tags, $active, $rootId, $depth, $request, $response, $context, $criteria));
  6. return CacheValueCompressor::compress($response);
  7. });
in vendor/shopware/core/System/SystemConfig/SystemConfigService.php -> Shopware\Core\Content\Category\SalesChannel\{closure} (line 451)
  1. public function trace(string $key, \Closure $param)
  2. {
  3. $this->traces[$key] = [];
  4. $this->keys[$key] = true;
  5. $result = $param();
  6. unset($this->keys[$key]);
  7. return $result;
  8. }
  1. throw new DecorationPatternException(self::class);
  2. }
  3. public function trace(string $key, \Closure $param)
  4. {
  5. return $this->collection->trace($key, fn () => $this->translator->trace($key, fn () => $this->config->trace($key, $param)));
  6. }
  7. public function get(string $key): array
  8. {
  9. return array_merge(
in vendor/shopware/core/Framework/Adapter/Translation/Translator.php -> Shopware\Core\Framework\Adapter\Cache\{closure} (line 101)
  1. public function trace(string $key, \Closure $param)
  2. {
  3. $this->traces[$key] = [];
  4. $this->keys[$key] = true;
  5. $result = $param();
  6. unset($this->keys[$key]);
  7. return $result;
  8. }
  1. throw new DecorationPatternException(self::class);
  2. }
  3. public function trace(string $key, \Closure $param)
  4. {
  5. return $this->collection->trace($key, fn () => $this->translator->trace($key, fn () => $this->config->trace($key, $param)));
  6. }
  7. public function get(string $key): array
  8. {
  9. return array_merge(
in vendor/shopware/core/Framework/Adapter/Cache/CacheTagCollection.php -> Shopware\Core\Framework\Adapter\Cache\{closure} (line 56)
  1. public function trace(string $key, \Closure $param)
  2. {
  3. $this->traces[$key] = [];
  4. $this->keys[$key] = true;
  5. $result = $param();
  6. unset($this->keys[$key]);
  7. return $result;
  8. }
  1. throw new DecorationPatternException(self::class);
  2. }
  3. public function trace(string $key, \Closure $param)
  4. {
  5. return $this->collection->trace($key, fn () => $this->translator->trace($key, fn () => $this->config->trace($key, $param)));
  6. }
  7. public function get(string $key): array
  8. {
  9. return array_merge(
  1. return $this->decorated;
  2. }
  3. public function trace(string $key, \Closure $param)
  4. {
  5. return $this->themeConfigAccessor->trace($key, fn () => $this->getDecorated()->trace($key, $param));
  6. }
  7. public function get(string $key): array
  8. {
  9. return array_unique(array_merge(
in vendor/shopware/storefront/Theme/ThemeConfigValueAccessor.php -> Shopware\Storefront\Framework\Cache\{closure} (line 95)
  1. public function trace(string $key, \Closure $param)
  2. {
  3. $this->traces[$key] = [];
  4. $this->keys[$key] = true;
  5. $result = $param();
  6. unset($this->keys[$key]);
  7. return $result;
  8. }
  1. return $this->decorated;
  2. }
  3. public function trace(string $key, \Closure $param)
  4. {
  5. return $this->themeConfigAccessor->trace($key, fn () => $this->getDecorated()->trace($key, $param));
  6. }
  7. public function get(string $key): array
  8. {
  9. return array_unique(array_merge(
  1. $value = $this->cache->get($key, function (ItemInterface $item) use ($active, $depth, $rootId, $request, $context, $criteria, $tags) {
  2. $request->query->set('depth', (string) $depth);
  3. $name = self::buildName($active);
  4. $response = $this->tracer->trace($name, fn () => $this->getDecorated()->load($active, $rootId, $request, $context, $criteria));
  5. $item->tag($this->generateTags($tags, $active, $rootId, $depth, $request, $response, $context, $criteria));
  6. return CacheValueCompressor::compress($response);
  7. });
in vendor/symfony/cache-contracts/CacheTrait.php -> Shopware\Core\Content\Category\SalesChannel\{closure} (line 64)
  1. }
  2. }
  3. if ($recompute) {
  4. $save = true;
  5. $item->set($callback($item, $save));
  6. if ($save) {
  7. $pool->save($item);
  8. }
  9. }
  1. */
  2. trait CacheTrait
  3. {
  4. public function get(string $key, callable $callback, ?float $beta = null, ?array &$metadata = null): mixed
  5. {
  6. return $this->doGet($this, $key, $callback, $beta, $metadata);
  7. }
  8. public function delete(string $key): bool
  9. {
  10. return $this->deleteItem($key);
  1. if ($key === null) {
  2. return $this->getDecorated()->load($active, $rootId, $request, $context, $criteria);
  3. }
  4. $value = $this->cache->get($key, function (ItemInterface $item) use ($active, $depth, $rootId, $request, $context, $criteria, $tags) {
  5. $request->query->set('depth', (string) $depth);
  6. $name = self::buildName($active);
  7. $response = $this->tracer->trace($name, fn () => $this->getDecorated()->load($active, $rootId, $request, $context, $criteria));
  1. if ($this->isActiveLoaded($rootId, $response->getCategories(), $activeId)) {
  2. return $response;
  3. }
  4. // reload missing children of active category, depth 0 allows us the skip base navigation loading in the core route
  5. $active = $this->loadNavigation($request, $activeId, $rootId, 0, $context, $criteria, [self::ALL_TAG]);
  6. $response->getCategories()->merge($active->getCategories());
  7. return $response;
  8. });
in vendor/shopware/core/Profiling/Profiler.php -> Shopware\Core\Content\Category\SalesChannel\{closure} (line 67)
  1. try {
  2. foreach (self::$profilers as $profiler) {
  3. $profiler->start($name, $category, $tags);
  4. }
  5. $result = $closure();
  6. } finally {
  7. foreach (self::$profilers as $profiler) {
  8. $profiler->stop($name);
  9. }
  10. }
  1. {
  2. if (Feature::isActive('cache_rework')) {
  3. return $this->getDecorated()->load($activeId, $rootId, $request, $context, $criteria);
  4. }
  5. return Profiler::trace('navigation-route', function () use ($activeId, $rootId, $request, $context, $criteria) {
  6. if ($context->hasState(...$this->states)) {
  7. return $this->getDecorated()->load($activeId, $rootId, $request, $context, $criteria);
  8. }
  9. $depth = $request->query->getInt('depth', $request->request->getInt('depth', 2));
  1. return $response;
  2. }
  3. $rootId = $this->resolveAliasId($rootId, $context->getSalesChannel());
  4. $response = $this->getDecorated()->load($activeId, $rootId, $request, $context, $criteria);
  5. $buildTree = $request->query->getBoolean('buildTree', $request->request->getBoolean('buildTree', true));
  6. if (!$buildTree) {
  7. return $response;
  1. $criteria = new Criteria();
  2. $criteria->setTitle('header::navigation');
  3. $categories = $this->navigationRoute
  4. ->load($activeId, $rootId, $request, $context, $criteria)
  5. ->getCategories();
  6. $navigation = $this->getTree($rootId, $categories, $categories->get($activeId));
  7. $event = new NavigationLoadedEvent($navigation, $context);
  1. $languages = $this->getLanguages($context, $request);
  2. $event = new CurrencyRouteRequestEvent($request, new Request(), $context);
  3. $this->eventDispatcher->dispatch($event);
  4. $navigation = $this->navigationLoader->load(
  5. (string) $navigationId,
  6. $context,
  7. $salesChannel->getNavigationCategoryId(),
  8. $salesChannel->getNavigationCategoryDepth()
  9. );
  1. );
  2. return $page;
  3. }
  4. $page->setHeader(
  5. $this->headerLoader->load($request, $context)
  6. );
  7. $page->setFooter(
  8. $this->footerLoader->load($request, $context)
  9. );
in vendor/shopware/core/Profiling/Profiler.php -> Shopware\Storefront\Page\{closure} (line 67)
  1. try {
  2. foreach (self::$profilers as $profiler) {
  3. $profiler->start($name, $category, $tags);
  4. }
  5. $result = $closure();
  6. } finally {
  7. foreach (self::$profilers as $profiler) {
  8. $profiler->stop($name);
  9. }
  10. }
  1. ) {
  2. }
  3. public function load(Request $request, SalesChannelContext $context): Page
  4. {
  5. return Profiler::trace('generic-page-loader', function () use ($request, $context) {
  6. $page = new Page();
  7. $page->setMetaInformation((new MetaInformation())->assign([
  8. 'revisit' => '15 days',
  9. 'robots' => 'index,follow',
  1. ) {
  2. }
  3. public function load(Request $request, SalesChannelContext $context): NavigationPage
  4. {
  5. $page = $this->genericLoader->load($request, $context);
  6. $page = NavigationPage::createFrom($page);
  7. $navigationId = $request->get('navigationId', $context->getSalesChannel()->getNavigationCategoryId());
  8. $category = $this->cmsPageRoute
  1. }
  2. #[Route(path: '/navigation/{navigationId}', name: 'frontend.navigation.page', options: ['seo' => true], defaults: ['_httpCache' => true], methods: ['GET'])]
  3. public function index(SalesChannelContext $context, Request $request): Response
  4. {
  5. $page = $this->navigationPageLoader->load($request, $context);
  6. $preparedNavigationId = $this->validateInput($request->get("navigationId"));
  7. $this->hook(new NavigationPageLoadedHook($page, $context));
  8. $categoryRepository = $this->container->get('sales_channel.category.repository');
  1. $this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
  2. $controller = $event->getController();
  3. $arguments = $event->getArguments();
  4. // call controller
  5. $response = $controller(...$arguments);
  6. // view
  7. if (!$response instanceof Response) {
  8. $event = new ViewEvent($this, $request, $type, $response, $event);
  9. $this->dispatcher->dispatch($event, KernelEvents::VIEW);
  1. $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  2. $this->requestStack->push($request);
  3. $response = null;
  4. try {
  5. return $response = $this->handleRaw($request, $type);
  6. } catch (\Throwable $e) {
  7. if ($e instanceof \Error && !$this->handleAllThrowables) {
  8. throw $e;
  9. }
  1. $this->dispatcher->dispatch($event);
  2. return $event->getResponse();
  3. }
  4. return parent::handle($request, $type, $catch);
  5. }
  6. }
  1. if (!IpUtils::checkIp('127.0.0.1', $trustedProxies)) {
  2. Request::setTrustedProxies(array_merge($trustedProxies, ['127.0.0.1']), Request::getTrustedHeaderSet());
  3. }
  4. try {
  5. return $kernel->handle($request, $type, $catch);
  6. } finally {
  7. // restore global state
  8. Request::setTrustedProxies($trustedProxies, $trustedHeaderSet);
  9. }
  10. }
  1. protected function forward(Request $request, bool $catch = false, ?Response $entry = null): Response
  2. {
  3. $this->surrogate?->addSurrogateCapability($request);
  4. // always a "master" request (as the real master request can be in cache)
  5. $response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MAIN_REQUEST, $catch);
  6. /*
  7. * Support stale-if-error given on Responses or as a config option.
  8. * RFC 7234 summarizes in Section 4.2.4 (but also mentions with the individual
  9. * Cache-Control directives) that
  1. // avoid that the backend sends no content
  2. $subRequest->headers->remove('If-Modified-Since');
  3. $subRequest->headers->remove('If-None-Match');
  4. $response = $this->forward($subRequest, $catch);
  5. if ($response->isCacheable()) {
  6. $this->store($request, $response);
  7. }
  1. }
  2. if (null === $entry) {
  3. $this->record($request, 'miss');
  4. return $this->fetch($request, $catch);
  5. }
  6. if (!$this->isFreshEnough($request, $entry)) {
  7. $this->record($request, 'stale');
  1. reload the cache by fetching a fresh response and caching it (if possible).
  2. */
  3. $this->record($request, 'reload');
  4. $response = $this->fetch($request, $catch);
  5. } else {
  6. $response = $this->lookup($request, $catch);
  7. }
  8. $this->restoreResponseBody($request, $response);
  9. if (HttpKernelInterface::MAIN_REQUEST === $type) {
  1. // only handle main request inside http cache, because ESI tags are also interpreted as main request.
  2. // sub requests are requests, which are forwarded to the kernel inside the php stack
  3. // https://github.com/symfony/symfony/issues/51648#issuecomment-1717846894
  4. if ($type === HttpKernelInterface::MAIN_REQUEST) {
  5. $response = parent::handle($request, $type, $catch);
  6. } elseif ($request->attributes->has('_sw_esi')) {
  7. $response = parent::handle($request, $type, $catch);
  8. } else {
  9. $response = $this->getKernel()->handle($request, $type, $catch);
  10. }
in vendor/shopware/core/Kernel.php -> handle (line 148)
  1. {
  2. if (!$this->booted) {
  3. $this->boot();
  4. }
  5. return $this->getHttpKernel()->handle($request, $type, $catch);
  6. }
  7. public function boot(): void
  8. {
  9. if ($this->booted === true) {
  1. ) {
  2. }
  3. public function run(): int
  4. {
  5. $response = $this->kernel->handle($this->request);
  6. if (Kernel::VERSION_ID >= 60400) {
  7. $response->send(false);
  8. if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in vendor/autoload_runtime.php -> run (line 29)
  1. $app = $app(...$args);
  2. exit(
  3. $runtime
  4. ->getRunner($app)
  5. ->run()
  6. );
require_once('/var/www/html/shopware/vendor/autoload_runtime.php') in public/index.php (line 10)
  1. use Shopware\Core\Installer\InstallerKernel;
  2. use Shopware\Core\Framework\Adapter\Kernel\KernelFactory;
  3. $_SERVER['SCRIPT_FILENAME'] = __FILE__;
  4. require_once __DIR__ . '/../vendor/autoload_runtime.php';
  5. if (!file_exists(__DIR__ . '/../.env') && !file_exists(__DIR__ . '/../.env.dist') && !file_exists(__DIR__ . '/../.env.local.php')) {
  6. $_SERVER['APP_RUNTIME_OPTIONS']['disable_dotenv'] = true;
  7. }