vendor/crehler/mojebambino-engine/src/Storefront/Controller/ProductController.php line 43

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Crehler\MojeBambinoEngine\Storefront\Controller;
  3. use Crehler\MojeBambinoEngine\Storefront\Page\Product\ModalProductPageLoader;
  4. use Shopware\Core\Framework\Routing\Annotation\RouteScope;
  5. use Shopware\Core\Framework\Validation\DataBag\RequestDataBag;
  6. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  7. use Shopware\Storefront\Controller\StorefrontController;
  8. use Shopware\Storefront\Framework\Cache\Annotation\HttpCache;
  9. use Shopware\Storefront\Page\Product\Configurator\ProductCombinationFinder;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * @RouteScope(scopes={"storefront"})
  15.  */
  16. class ProductController extends StorefrontController
  17. {
  18.     /**
  19.      * @var ModalProductPageLoader
  20.      */
  21.     private $modalProductPageLoader;
  22.     /**
  23.      * @var ProductCombinationFinder
  24.      */
  25.     private $combinationFinder;
  26.     public function __construct(
  27.         ModalProductPageLoader $modalProductPageLoader,
  28.         ProductCombinationFinder $combinationFinder
  29.     ) {
  30.         $this->modalProductPageLoader $modalProductPageLoader;
  31.         $this->combinationFinder $combinationFinder;
  32.     }
  33.     /**
  34.      * @HttpCache()
  35.      * @Route("/quickview/full/{productId}", name="widgets.quickview.full", methods={"GET"}, defaults={"XmlHttpRequest": true})
  36.      */
  37.     public function quickviewFull(Request $requestSalesChannelContext $salesChannelContext): Response
  38.     {
  39.         $page $this->modalProductPageLoader->load($request$request->attributes->get('productId'), null$salesChannelContext);
  40.         return $this->renderStorefront('@Storefront/storefront/component/product/quickview/full.html.twig', ['page' => $page]);
  41.     }
  42.     /**
  43.      * @HttpCache()
  44.      * @Route("/quickview/{productId}/switch", name="widgets.quickview.switch", methods={"GET"}, defaults={"XmlHttpRequest": true})
  45.      */
  46.     public function quickviewVariantFull(string $productIdRequest $requestSalesChannelContext $salesChannelContext): Response
  47.     {
  48.         $switchedOption $request->query->get('switched');
  49.         $newOptions json_decode($request->query->get('options'), true);
  50.         $redirect $this->combinationFinder->find($productId$switchedOption$newOptions$salesChannelContext);
  51.         $page $this->modalProductPageLoader->load($request$productId$redirect->getVariantId(), $salesChannelContext);
  52.         return $this->renderStorefront('@Storefront/storefront/component/product/quickview/full.html.twig', ['page' => $page]);
  53.     }
  54. }