src/Twig/Extension/CartExtension.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Twig\Extension;
  3. use App\Model\Collection\ProductArticleCollection;
  4. use App\Services\CartService;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. use Twig\Extension\AbstractExtension;
  8. use Twig\TwigFunction;
  9. class CartExtension extends AbstractExtension
  10. {
  11.     /** @var RequestStack $requestStack */
  12.     protected RequestStack $requestStack;
  13.     public function __construct(RequestStack $requestStack)
  14.     {
  15.         $this->requestStack $requestStack;
  16.     }
  17.     /**
  18.      * @return array<mixed>
  19.      */
  20.     public function getFunctions(): array
  21.     {
  22.         return [
  23.             new TwigFunction('cartCount', [$this'cartCount']),
  24.             new TwigFunction('getProductInfo', [$this'getProductInfo']),
  25.         ];
  26.     }
  27.     /**
  28.      * @return int
  29.      */
  30.     public function cartCount(): int
  31.     {
  32.         $request $this->requestStack->getCurrentRequest();
  33.         if (!$request instanceof Request) {
  34.             return 0;
  35.         }
  36.         $session $request->getSession();
  37.         $sessionCartCollection $session->get(CartService::$sessionCartIdentifier);
  38.         if (!$sessionCartCollection instanceof ProductArticleCollection) {
  39.             return 0;
  40.         }
  41.         return $sessionCartCollection->getCartCount();
  42.     }
  43. }