<?php
namespace App\Twig\Extension;
use App\Model\Collection\ProductArticleCollection;
use App\Services\CartService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class CartExtension extends AbstractExtension
{
/** @var RequestStack $requestStack */
protected RequestStack $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
/**
* @return array<mixed>
*/
public function getFunctions(): array
{
return [
new TwigFunction('cartCount', [$this, 'cartCount']),
new TwigFunction('getProductInfo', [$this, 'getProductInfo']),
];
}
/**
* @return int
*/
public function cartCount(): int
{
$request = $this->requestStack->getCurrentRequest();
if (!$request instanceof Request) {
return 0;
}
$session = $request->getSession();
$sessionCartCollection = $session->get(CartService::$sessionCartIdentifier);
if (!$sessionCartCollection instanceof ProductArticleCollection) {
return 0;
}
return $sessionCartCollection->getCartCount();
}
}