vendor/crehler/mojebambino-engine/src/Storefront/Controller/SubNavigationController.php line 48

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Crehler\MojeBambinoEngine\Storefront\Controller;
  3. use Crehler\MojeBambinoEngine\Util\Lifecycle\ActivateDeactivate;
  4. use Shopware\Core\Content\Category\Service\NavigationLoader;
  5. use Shopware\Core\Content\Category\Tree\Tree;
  6. use Shopware\Storefront\Framework\Cache\Annotation\HttpCache;
  7. use Shopware\Core\Framework\Routing\Annotation\RouteScope;
  8. use Shopware\Core\System\SalesChannel\SalesChannelContext;
  9. use Shopware\Storefront\Controller\StorefrontController;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. /**
  12.  * @RouteScope(scopes={"storefront"})
  13.  */
  14. class SubNavigationController extends StorefrontController
  15. {
  16.     public const PRODUCT_CATEGORY '423b226905de450685700be5cef91bc5';
  17.     protected NavigationLoader $navigationLoader;
  18.     public function __construct(NavigationLoader $navigationLoader)
  19.     {
  20.         $this->navigationLoader $navigationLoader;
  21.     }
  22.     /**
  23.      * @HttpCache()
  24.      * @Route("/widgets/mojebambino/sub-navigation/{categoryId}/{activeCategoryId}", name="frontend.mojebambino.sub-navigation", options={"seo"="false"}, methods={"GET"}, defaults={"XmlHttpRequest": true})
  25.      */
  26.     public function productTree(string $categoryIdstring $activeCategoryIdSalesChannelContext $context)
  27.     {
  28.         $tree $this->navigationLoader->load($categoryId$context$categoryId3);
  29.         if (isset($tree->getActive()->getCustomFields()[ActivateDeactivate::INTERMEDIATE_CATEGORY])
  30.             && ($tree->getActive()->getCustomFields()[ActivateDeactivate::INTERMEDIATE_CATEGORY])) {
  31.             $tree $this->navigationLoader->load(
  32.                 $tree->getActive()->getParentId(),
  33.                 $context,
  34.                 $tree->getActive()->getParentId(),
  35.                 3
  36.             );
  37.         }
  38.         $tree $this->prepareTree($tree$activeCategoryId);
  39.         return $this->renderStorefront(
  40.             '@Storefront/storefront/layout/sidebar/category-sub-navigation-ajax.html.twig',
  41.             [
  42.                 'navigationTree' => $tree->getTree()
  43.             ]
  44.         );
  45.     }
  46.     private function prepareTree(Tree $treestring $activeCategoryId): Tree
  47.     {
  48.         $newTree $tree->getTree();
  49.         // unset Produkty Category from base tree
  50.         if (isset($newTree[self::PRODUCT_CATEGORY])) {
  51.             unset($newTree[self::PRODUCT_CATEGORY]);
  52.         }
  53.         unset($newTree[$activeCategoryId]);
  54.         $tree->setTree($newTree);
  55.         return $tree;
  56.     }
  57. }