Error 404 Not Found

GET https://komperdell.baldneu.at/detail/79878345d73f4270851a0c6bb590cee1

Forwarded to ErrorController (f000ff)

Exceptions

Product for id 79878345d73f4270851a0c6bb590cee1 not found.

Shopware\Core\Content\Product\Exception\ ProductNotFoundException

Show exception properties
0 of 0
Shopware\Core\Content\Product\Exception\ProductNotFoundException {#7595 â–¼ -statusCode: 404 -headers: [] #parameters: array:1 [â–¶ "productId" => "79878345d73f4270851a0c6bb590cee1" ] }
  1.             $product $this->productRepository
  2.                 ->search($criteria$context)
  3.                 ->first();
  4.             if (!($product instanceof SalesChannelProductEntity)) {
  5.                 throw new ProductNotFoundException($productId);
  6.             }
  7.             $parent $product->getParentId() ?? $product->getId();
  8.             $this->dispatcher->dispatch(new AddCacheTagEvent(EntityCacheKeyGenerator::buildProductTag($parent)));
in vendor/shopware/core/Profiling/Profiler.php -> Shopware\Core\Content\Product\SalesChannel\Detail\{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.     #[Route(path'/store-api/product/{productId}'name'store-api.product.detail'methods: ['POST'], defaults: ['_entity' => 'product'])]
  3.     public function load(string $productIdRequest $requestSalesChannelContext $contextCriteria $criteria): ProductDetailRouteResponse
  4.     {
  5.         return Profiler::trace('product-detail-route', function () use ($productId$request$context$criteria) {
  6.             $mainVariantId $this->checkVariantListingConfig($productId$context);
  7.             $resolveVariantIdEvent = new ResolveVariantIdEvent(
  8.                 $productId,
  9.                 $mainVariantId,
  1.         }
  2.         $value $this->cache->get($key, function (ItemInterface $item) use ($productId$request$context$criteria) {
  3.             $name self::buildName($productId);
  4.             $response $this->tracer->trace($name, fn () => $this->getDecorated()->load($productId$request$context$criteria));
  5.             $item->tag($this->generateTags($productId$request$response$context$criteria));
  6.             return CacheValueCompressor::compress($response);
  7.         });
in vendor/shopware/core/System/SystemConfig/SystemConfigService.php -> Shopware\Core\Content\Product\SalesChannel\Detail\{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.         }
  2.         $value $this->cache->get($key, function (ItemInterface $item) use ($productId$request$context$criteria) {
  3.             $name self::buildName($productId);
  4.             $response $this->tracer->trace($name, fn () => $this->getDecorated()->load($productId$request$context$criteria));
  5.             $item->tag($this->generateTags($productId$request$response$context$criteria));
  6.             return CacheValueCompressor::compress($response);
  7.         });
in vendor/symfony/cache-contracts/CacheTrait.php -> Shopware\Core\Content\Product\SalesChannel\Detail\{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($productId$request$context$criteria);
  3.         }
  4.         $value $this->cache->get($key, function (ItemInterface $item) use ($productId$request$context$criteria) {
  5.             $name self::buildName($productId);
  6.             $response $this->tracer->trace($name, fn () => $this->getDecorated()->load($productId$request$context$criteria));
  7.             $item->tag($this->generateTags($productId$request$response$context$criteria));
  1.             new FieldSorting('position')
  2.         );
  3.         $this->eventDispatcher->dispatch(new ProductPageCriteriaEvent($productId$criteria$context));
  4.         $result $this->productDetailRoute->load($productId$request$context$criteria);
  5.         $product $result->getProduct();
  6.         if ($product->getMedia() && $product->getCover()) {
  7.             $product->setMedia(new ProductMediaCollection(array_merge(
  8.                 [$product->getCover()->getId() => $product->getCover()],
  1.     }
  2.     #[Route(path'/detail/{productId}'name'frontend.detail.page'defaults: ['_httpCache' => true], methods: ['GET'])]
  3.     public function index(SalesChannelContext $contextRequest $request): Response
  4.     {
  5.         $page $this->productPageLoader->load($request$context);
  6.         $this->hook(new ProductPageLoadedHook($page$context));
  7.         return $this->renderStorefront('@Storefront/storefront/page/content/product-detail.html.twig', ['page' => $page]);
  8.     }
  1.         $this->dispatcher->dispatch($eventKernelEvents::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($eventKernelEvents::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 $requestbool $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$requestHttpKernelInterface::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 155)
  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('/srv/customers/komperdell/websites/default/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. }