em = $em; $this->security = $security; $this->merchantUtils = $merchantUtils; $this->formFactory = $formFactory; $this->requestStack = $requestStack; $this->productCategoryRepository = $this->em->getRepository($this->em->getClassMetadata(ProductCategoryInterface::class)->getName()); $this->merchantRepository = $this->em->getRepository($this->em->getClassMetadata(MerchantInterface::class)->getName()); $this->productFamilyRepository = $this->em->getRepository($this->em->getClassMetadata(ProductFamilyInterface::class)->getName()); $this->parameterBag = $parameterBag; $this->kernel = $kernel; $this->router = $router ; } public function getFunctions() { return array( new TwigFunction('get_product_categories', [$this, 'getProductCategories']), new TwigFunction('get_form_newsletter', [$this, 'getFormNewsletter']), new TwigFunction('get_merchants', [$this, 'getMerchants']), new TwigFunction('get_file_manager_folder', [$this, 'getFileManagerFolder']), new TwigFunction('lc_format_price', [$this, 'formatPrice']), ); } public function getFilters() { return [ new TwigFilter('format_price', [$this, 'formatPrice']), new TwigFilter('lc_cache', [$this, 'lcCache']), ]; } public function lcCache($file) { $cacheTime = filemtime($this->kernel->getProjectDir() . '/public' . $file); if ($cacheTime) { return $file . '?c=' . $cacheTime; } else { return $file . "?c=0"; } } public function getProductCategories() { $categories = $this->productCategoryRepository->findAllParents(false); return $categories; } public function getFormNewsletter() { $form = $this->formFactory->create(NewsletterType::class); return $form->createView(); } public function formatPrice($price, $unbreakableSpace = true) { $price = number_format($price, 2, ',', ' '); $price .= $unbreakableSpace ? ' ' : ' ' ; $price .= '€' ; return $price; } public function getMerchants() { return $this->merchantRepository->findAll(); } }