Symfony Exception

ProductSortingNotFoundException

HTTP 404 Not Found

Product sorting with key position not found.

Exception

Shopware\Core\Content\Product\SalesChannel\Exception\ ProductSortingNotFoundException

  1.         $sorting $sortings->getByKey($key);
  2.         if ($sorting !== null) {
  3.             return $sorting;
  4.         }
  5.         throw new ProductSortingNotFoundException($key);
  6.     }
  7.     private function getAvailableSortings(Request $requestContext $context): EntityCollection
  8.     {
  9.         if (!Feature::isActive('FEATURE_NEXT_5983')) {
  1.     {
  2.         /** @var ProductSortingCollection $sortings */
  3.         $sortings $criteria->getExtension('sortings') ?? new ProductSortingCollection();
  4.         $sortings->merge($this->getAvailableSortings($request$salesChannelContext->getContext()));
  5.         $currentSorting $this->getCurrentSorting($sortings$request);
  6.         $criteria->addSorting(
  7.             ...$currentSorting->createDalSorting()
  8.         );
  1.         $criteria->addAssociation('cover.media');
  2.         $criteria->addAssociation('options');
  3.         $this->handlePagination($request$criteria);
  4.         $this->handleFilters($request$criteria);
  5.         $this->handleSorting($request$criteria$salesChannelContext);
  6.     }
  7.     public function handleSearchRequest(ProductSearchCriteriaEvent $event): void
  8.     {
  9.         $request $event->getRequest();
  1.         $this->called true;
  2.         $this->priority $dispatcher->getListenerPriority($eventName$this->listener);
  3.         $e $this->stopwatch->start($this->name'event_listener');
  4.         ($this->optimizedListener ?? $this->listener)($event$eventName$dispatcher);
  5.         if ($e->isStarted()) {
  6.             $e->stop();
  7.         }
  1.         foreach ($listeners as $listener) {
  2.             if ($stoppable && $event->isPropagationStopped()) {
  3.                 break;
  4.             }
  5.             // @deprecated: the ternary operator is part of a BC layer and should be removed in 5.0
  6.             $listener($listener instanceof WrappedListener ? new LegacyEventProxy($event) : $event$eventName$this);
  7.         }
  8.     }
  9.     /**
  10.      * @deprecated since Symfony 4.3, use callListeners() instead
  1.         } else {
  2.             $listeners $this->getListeners($eventName);
  3.         }
  4.         if ($listeners) {
  5.             $this->callListeners($listeners$eventName$event);
  6.         }
  7.         return $event;
  8.     }
  1.         $this->definitionRegistry $definitionRegistry;
  2.     }
  3.     public function dispatch($event, ?string $eventName null): object
  4.     {
  5.         $event $this->dispatcher->dispatch($event$eventName);
  6.         if (!$event instanceof BusinessEventInterface) {
  7.             return $event;
  8.         }
  1.                 }
  2.                 $this->dispatch($nested$name);
  3.             }
  4.         }
  5.         return $this->dispatcher->dispatch($event$eventName);
  6.     }
  7.     public function addListener($eventName$listener$priority 0): void
  8.     {
  9.         $this->dispatcher->addListener($eventName$listener$priority);
  1.         try {
  2.             $this->beforeDispatch($eventName$event);
  3.             try {
  4.                 $e $this->stopwatch->start($eventName'section');
  5.                 try {
  6.                     $this->dispatcher->dispatch($event$eventName);
  7.                 } finally {
  8.                     if ($e->isStarted()) {
  9.                         $e->stop();
  10.                     }
  11.                 }
  1.                 new EqualsFilter('product.categoriesRo.id'$categoryId)
  2.             );
  3.         }
  4.         $this->eventDispatcher->dispatch(
  5.             new ProductListingCriteriaEvent($request$criteria$salesChannelContext)
  6.         );
  7.         $result $this->listingLoader->load($criteria$salesChannelContext);
  8.         $result ProductListingResult::createFrom($result);
  1.         $criteria = new Criteria();
  2.         $criteria->setTitle('cms::product-listing');
  3.         $listing $this->listingRoute
  4.             ->load($navigationId$request$context$criteria)
  5.             ->getResult();
  6.         $data->setListing($listing);
  7.     }
  1.             $result = new ElementDataCollection();
  2.             $this->mapSearchResults($result$slot$slotCriteriaList$searchResults);
  3.             $this->mapEntities($result$slot$slotCriteriaList$entities);
  4.             $resolver->enrich($slot$resolverContext$result);
  5.             // replace with return value from enrich(), because it's allowed to change the entity type
  6.             $slots->set($slotId$slot);
  7.         }
  1.         return $pages;
  2.     }
  3.     private function loadSlotData(CmsPageEntity $pageResolverContext $resolverContext): void
  4.     {
  5.         $slots $this->slotDataResolver->resolve($page->getSections()->getBlocks()->getSlots(), $resolverContext);
  6.         $page->getSections()->getBlocks()->setSlots($slots);
  7.     }
  8.     private function overwriteSlotConfig(CmsPageEntity $page, array $config): void
  1.             // step 4, overwrite slot config
  2.             $this->overwriteSlotConfig($page$overwrite);
  3.             // step 5, resolve slot data
  4.             $this->loadSlotData($page$resolverContext);
  5.         }
  6.         $this->eventDispatcher->dispatch(new CmsPageLoadedEvent($request$pages->getEntities(), $context));
  7.         return $pages;
  1.         }
  2.         $resolverContext = new EntityResolverContext($context$request$this->definition$category);
  3.         $pages $this->cmsPageLoader->load(
  4.             $request,
  5.             $this->createCriteria($pageId$request),
  6.             $context,
  7.             $category->getTranslation('slotConfig'),
  8.             $resolverContext
  9.         );
  1.         $page NavigationPage::createFrom($page);
  2.         $navigationId $request->get('navigationId'$context->getSalesChannel()->getNavigationCategoryId());
  3.         $category $this->cmsPageRoute
  4.             ->load($navigationId$request$context)
  5.             ->getCategory();
  6.         if (!$category->getActive()) {
  7.             throw new CategoryNotFoundException($category->getId());
  8.         }
  1.      * @HttpCache()
  2.      * @Route("/navigation/{navigationId}", name="frontend.navigation.page", options={"seo"=true}, methods={"GET"})
  3.      */
  4.     public function index(SalesChannelContext $contextRequest $request): Response
  5.     {
  6.         $page $this->navigationPageLoader->load($request$context);
  7.         return $this->renderStorefront('@Storefront/storefront/page/content/index.html.twig', ['page' => $page]);
  8.     }
  9.     /**
  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);
  9.             $this->dispatcher->dispatch($eventKernelEvents::VIEW);
  1.     public function handle(Request $request$type HttpKernelInterface::MASTER_REQUEST$catch true)
  2.     {
  3.         $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  4.         try {
  5.             return $this->handleRaw($request$type);
  6.         } catch (\Exception $e) {
  7.             if ($e instanceof RequestExceptionInterface) {
  8.                 $e = new BadRequestHttpException($e->getMessage(), $e);
  9.             }
  10.             if (false === $catch) {
  1.         $this->boot();
  2.         ++$this->requestStackSize;
  3.         $this->resetServices true;
  4.         try {
  5.             return $this->getHttpKernel()->handle($request$type$catch);
  6.         } finally {
  7.             --$this->requestStackSize;
  8.         }
  9.     }
  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.         if ($this->surrogate) {
  2.             $this->surrogate->addSurrogateCapability($request);
  3.         }
  4.         // always a "master" request (as the real master request can be in cache)
  5.         $response SubRequestHandler::handle($this->kernel$requestHttpKernelInterface::MASTER_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::MASTER_REQUEST === $type) {
  1.             && $container->getParameter('shopware.http.cache.enabled');
  2.         if ($enabled) {
  3.             $kernel = new HttpCache($kernel$container->get(CacheStore::class), null, ['debug' => $this->debug]);
  4.         }
  5.         $response $kernel->handle($transformed$type$catch);
  6.         // fire event to trigger runtime events like seo url headers
  7.         $event = new BeforeSendResponseEvent($transformed$response);
  8.         $container->get('event_dispatcher')->dispatch($event);
in vendor/shopware/core/HttpKernel.php -> doHandle (line 80)
  1.     }
  2.     public function handle(Request $request$type HttpKernelInterface::MASTER_REQUEST$catch true): HttpKernelResult
  3.     {
  4.         try {
  5.             return $this->doHandle($request, (int) $type, (bool) $catch);
  6.         } catch (DBALException $e) {
  7.             $connectionParams self::getConnection()->getParams();
  8.             $message str_replace([$connectionParams['url'], $connectionParams['password'], $connectionParams['user']], '******'$e->getMessage());
HttpKernel->handle(object(Request)) in public/index.php (line 83)
  1. }
  2. $request Request::createFromGlobals();
  3. $kernel = new HttpKernel($appEnv$debug$classLoader);
  4. $result $kernel->handle($request);
  5. $result->getResponse()->send();
  6. $kernel->terminate($result->getRequest(), $result->getResponse());

Logs

No log messages

Stack Trace

ProductSortingNotFoundException

Shopware\Core\Content\Product\SalesChannel\Exception\ProductSortingNotFoundException:
Product sorting with key position not found.

  at vendor/shopware/core/Content/Product/SalesChannel/Listing/ProductListingFeaturesSubscriber.php:379
  at Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingFeaturesSubscriber->getCurrentSorting(object(ProductSortingCollection), object(Request))
     (vendor/shopware/core/Content/Product/SalesChannel/Listing/ProductListingFeaturesSubscriber.php:358)
  at Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingFeaturesSubscriber->handleSorting(object(Request), object(Criteria), object(SalesChannelContext))
     (vendor/shopware/core/Content/Product/SalesChannel/Listing/ProductListingFeaturesSubscriber.php:159)
  at Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingFeaturesSubscriber->handleListingRequest(object(ProductListingCriteriaEvent), 'Shopware\\Core\\Content\\Product\\Events\\ProductListingCriteriaEvent', object(TraceableEventDispatcher))
     (vendor/symfony/event-dispatcher/Debug/WrappedListener.php:126)
  at Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke(object(ProductListingCriteriaEvent), 'Shopware\\Core\\Content\\Product\\Events\\ProductListingCriteriaEvent', object(TraceableEventDispatcher))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:251)
  at Symfony\Component\EventDispatcher\EventDispatcher->callListeners(array(object(WrappedListener), object(WrappedListener)), 'Shopware\\Core\\Content\\Product\\Events\\ProductListingCriteriaEvent', object(ProductListingCriteriaEvent))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:73)
  at Symfony\Component\EventDispatcher\EventDispatcher->dispatch(object(ProductListingCriteriaEvent), 'Shopware\\Core\\Content\\Product\\Events\\ProductListingCriteriaEvent')
     (vendor/shopware/core/Framework/Event/BusinessEventDispatcher.php:44)
  at Shopware\Core\Framework\Event\BusinessEventDispatcher->dispatch(object(ProductListingCriteriaEvent), 'Shopware\\Core\\Content\\Product\\Events\\ProductListingCriteriaEvent')
     (vendor/shopware/core/Framework/Event/NestedEventDispatcher.php:32)
  at Shopware\Core\Framework\Event\NestedEventDispatcher->dispatch(object(ProductListingCriteriaEvent), 'Shopware\\Core\\Content\\Product\\Events\\ProductListingCriteriaEvent')
     (vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php:168)
  at Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch(object(ProductListingCriteriaEvent))
     (vendor/shopware/core/Content/Product/SalesChannel/Listing/ProductListingRoute.php:124)
  at Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingRoute->load('58ee18d1d17c4adaba5234caaf946f40', object(Request), object(SalesChannelContext), object(Criteria))
     (vendor/shopware/core/Content/Product/Cms/ProductListingCmsElementResolver.php:60)
  at Shopware\Core\Content\Product\Cms\ProductListingCmsElementResolver->enrich(object(CmsSlotEntity), object(EntityResolverContext), object(ElementDataCollection))
     (vendor/shopware/core/Content/Cms/DataResolver/CmsSlotsDataResolver.php:95)
  at Shopware\Core\Content\Cms\DataResolver\CmsSlotsDataResolver->resolve(object(CmsSlotCollection), object(EntityResolverContext))
     (vendor/shopware/core/Content/Cms/SalesChannel/SalesChannelCmsPageLoader.php:107)
  at Shopware\Core\Content\Cms\SalesChannel\SalesChannelCmsPageLoader->loadSlotData(object(CmsPageEntity), object(EntityResolverContext))
     (vendor/shopware/core/Content/Cms/SalesChannel/SalesChannelCmsPageLoader.php:97)
  at Shopware\Core\Content\Cms\SalesChannel\SalesChannelCmsPageLoader->load(object(Request), object(Criteria), object(SalesChannelContext), array(), object(EntityResolverContext))
     (vendor/shopware/core/Content/Category/SalesChannel/CategoryRoute.php:106)
  at Shopware\Core\Content\Category\SalesChannel\CategoryRoute->load('58ee18d1d17c4adaba5234caaf946f40', object(Request), object(SalesChannelContext))
     (vendor/shopware/storefront/Page/Navigation/NavigationPageLoader.php:52)
  at Shopware\Storefront\Page\Navigation\NavigationPageLoader->load(object(Request), object(SalesChannelContext))
     (vendor/shopware/storefront/Controller/NavigationController.php:54)
  at Shopware\Storefront\Controller\NavigationController->index(object(SalesChannelContext), object(Request))
     (vendor/symfony/http-kernel/HttpKernel.php:158)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:80)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:201)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php:85)
  at Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle(object(Kernel), object(Request), 1, true)
     (vendor/symfony/http-kernel/HttpCache/HttpCache.php:477)
  at Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(object(Request), true)
     (vendor/symfony/http-kernel/HttpCache/HttpCache.php:450)
  at Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch(object(Request), true)
     (vendor/symfony/http-kernel/HttpCache/HttpCache.php:344)
  at Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup(object(Request), true)
     (vendor/symfony/http-kernel/HttpCache/HttpCache.php:222)
  at Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(object(Request), 1, true)
     (vendor/shopware/core/HttpKernel.php:163)
  at Shopware\Core\HttpKernel->doHandle(object(Request), 1, true)
     (vendor/shopware/core/HttpKernel.php:80)
  at Shopware\Core\HttpKernel->handle(object(Request))
     (public/index.php:83)