vendor/store.shopware.com/moorlcreator/src/Storefront/Controller/CreatorController.php line 38

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace MoorlCreator\Storefront\Controller;
  3. use MoorlCreator\Core\Content\Creator\SalesChannel\CreatorFollowRoute;
  4. use MoorlCreator\Storefront\Page\Creator\CreatorPageLoader;
  5. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  6. use Shopware\Storefront\Controller\StorefrontController;
  7. use Shopware\Storefront\Framework\Cache\Annotation\HttpCache;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Shopware\Core\Framework\Routing\Annotation\LoginRequired;
  13. /**
  14.  * @Route(defaults={"_routeScope"={"storefront"}})
  15.  */
  16. class CreatorController extends StorefrontController
  17. {
  18.     private CreatorPageLoader $creatorPageLoader;
  19.     private CreatorFollowRoute $creatorFollowRoute;
  20.     public function __construct(
  21.         CreatorPageLoader $creatorPageLoader,
  22.         CreatorFollowRoute $creatorFollowRoute
  23.     ) {
  24.         $this->creatorPageLoader $creatorPageLoader;
  25.         $this->creatorFollowRoute $creatorFollowRoute;
  26.     }
  27.     /**
  28.      * @HttpCache()
  29.      * @Route("/creator/{creatorId}", name="moorl.creator.detail", methods={"GET"}, defaults={"XmlHttpRequest"=true})
  30.      */
  31.     public function detail(SalesChannelContext $contextRequest $request): Response
  32.     {
  33.         $page $this->creatorPageLoader->load($request$context);
  34.         if (!$page->getCmsPage()) {
  35.             return $this->renderStorefront('@Storefront/plugin/moorl-creator/page/creator-detail/index.html.twig', [
  36.                 'page' => $page
  37.             ]);
  38.         }
  39.         return $this->renderStorefront('@Storefront/plugin/moorl-creator/page/content/creator-detail.html.twig', [
  40.             'page' => $page
  41.         ]);
  42.     }
  43.     /**
  44.      * @LoginRequired()
  45.      * @Route("/creator/{creatorId}/follow", name="moorl.creator.follow", methods={"GET"})
  46.      */
  47.     public function follow(SalesChannelContext $contextRequest $request): Response
  48.     {
  49.         $this->creatorFollowRoute->toggle($request$context);
  50.         return $this->redirectToRoute('moorl.creator.detail', [
  51.             'creatorId' => $request->get('creatorId')
  52.         ]);
  53.     }
  54.     /**
  55.      * @Route("/creator/{creatorId}/products", name="moorl.creator.products", methods={"GET"}, defaults={"XmlHttpRequest"=true})
  56.      */
  57.     public function products(SalesChannelContext $contextRequest $request): Response
  58.     {
  59.         $page $this->creatorPageLoader->load($request$context);
  60.         return $this->renderStorefront('@Storefront/storefront/element/cms-element-creator-product-listing.html.twig', [
  61.             'page' => $page
  62.         ]);
  63.     }
  64.     /**
  65.      * @Route("/creator/{creatorId}/filter", name="moorl.creator.filter", methods={"GET"}, defaults={"XmlHttpRequest"=true})
  66.      */
  67.     public function filter(SalesChannelContext $contextRequest $request): JsonResponse
  68.     {
  69.        return new JsonResponse([]);
  70.     }
  71. }