{
/** @var ProductSortingCollection $sortings */
$sortings = $criteria->getExtension('sortings') ?? new ProductSortingCollection();
$sortings->merge($this->getAvailableSortings($request, $salesChannelContext->getContext()));
$currentSorting = $this->getCurrentSorting($sortings, $request);
$criteria->addSorting(
...$currentSorting->createDalSorting()
);
$criteria->addAssociation('cover.media');
$criteria->addAssociation('options');
$this->handlePagination($request, $criteria);
$this->handleFilters($request, $criteria);
$this->handleSorting($request, $criteria, $salesChannelContext);
}
public function handleSearchRequest(ProductSearchCriteriaEvent $event): void
{
$request = $event->getRequest();
foreach ($listeners as $listener) {
if ($stoppable && $event->isPropagationStopped()) {
break;
}
// @deprecated: the ternary operator is part of a BC layer and should be removed in 5.0
$listener($listener instanceof WrappedListener ? new LegacyEventProxy($event) : $event, $eventName, $this);
}
}
/**
* @deprecated since Symfony 4.3, use callListeners() instead
$result = new ElementDataCollection();
$this->mapSearchResults($result, $slot, $slotCriteriaList, $searchResults);
$this->mapEntities($result, $slot, $slotCriteriaList, $entities);
$resolver->enrich($slot, $resolverContext, $result);
// replace with return value from enrich(), because it's allowed to change the entity type
$slots->set($slotId, $slot);
}
return $pages;
}
private function loadSlotData(CmsPageEntity $page, ResolverContext $resolverContext): void
{
$slots = $this->slotDataResolver->resolve($page->getSections()->getBlocks()->getSlots(), $resolverContext);
$page->getSections()->getBlocks()->setSlots($slots);
}
private function overwriteSlotConfig(CmsPageEntity $page, array $config): void
$page = NavigationPage::createFrom($page);
$navigationId = $request->get('navigationId', $context->getSalesChannel()->getNavigationCategoryId());
$category = $this->cmsPageRoute
->load($navigationId, $request, $context)
->getCategory();
if (!$category->getActive()) {
throw new CategoryNotFoundException($category->getId());
}
* @HttpCache()
* @Route("/navigation/{navigationId}", name="frontend.navigation.page", options={"seo"=true}, methods={"GET"})
*/
public function index(SalesChannelContext $context, Request $request): Response
{
$page = $this->navigationPageLoader->load($request, $context);
return $this->renderStorefront('@Storefront/storefront/page/content/index.html.twig', ['page' => $page]);
}
/**
$this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);
$controller = $event->getController();
$arguments = $event->getArguments();
// call controller
$response = $controller(...$arguments);
// view
if (!$response instanceof Response) {
$event = new ViewEvent($this, $request, $type, $response);
$this->dispatcher->dispatch($event, KernelEvents::VIEW);
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
{
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
try {
return $this->handleRaw($request, $type);
} catch (\Exception $e) {
if ($e instanceof RequestExceptionInterface) {
$e = new BadRequestHttpException($e->getMessage(), $e);
}
if (false === $catch) {
if (!IpUtils::checkIp('127.0.0.1', $trustedProxies)) {
Request::setTrustedProxies(array_merge($trustedProxies, ['127.0.0.1']), Request::getTrustedHeaderSet());
}
try {
return $kernel->handle($request, $type, $catch);
} finally {
// restore global state
Request::setTrustedProxies($trustedProxies, $trustedHeaderSet);
}
}
if ($this->surrogate) {
$this->surrogate->addSurrogateCapability($request);
}
// always a "master" request (as the real master request can be in cache)
$response = SubRequestHandler::handle($this->kernel, $request, HttpKernelInterface::MASTER_REQUEST, $catch);
/*
* Support stale-if-error given on Responses or as a config option.
* RFC 7234 summarizes in Section 4.2.4 (but also mentions with the individual
* Cache-Control directives) that
reload the cache by fetching a fresh response and caching it (if possible).
*/
$this->record($request, 'reload');
$response = $this->fetch($request, $catch);
} else {
$response = $this->lookup($request, $catch);
}
$this->restoreResponseBody($request, $response);
if (HttpKernelInterface::MASTER_REQUEST === $type) {
&& $container->getParameter('shopware.http.cache.enabled');
if ($enabled) {
$kernel = new HttpCache($kernel, $container->get(CacheStore::class), null, ['debug' => $this->debug]);
}
$response = $kernel->handle($transformed, $type, $catch);
// fire event to trigger runtime events like seo url headers
$event = new BeforeSendResponseEvent($transformed, $response);
$container->get('event_dispatcher')->dispatch($event);
}
public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true): HttpKernelResult
{
try {
return $this->doHandle($request, (int) $type, (bool) $catch);
} catch (DBALException $e) {
$connectionParams = self::getConnection()->getParams();
$message = str_replace([$connectionParams['url'], $connectionParams['password'], $connectionParams['user']], '******', $e->getMessage());
No log messages
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('99b6de2ccc7a4f15bfa4a1ed5fb711d4', 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('99b6de2ccc7a4f15bfa4a1ed5fb711d4', 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) |