/** * Builds frontend main menu. * * @return ItemInterface */ public function createMainMenu() { $menu = $this->factory->createItem('root', array('childrenAttributes' => array('class' => 'nav nav-pills'))); $menu->setCurrentUri($this->request->getRequestUri()); if ($this->cartProvider->hasCart()) { $cart = $this->cartProvider->getCart(); $cartTotals = array('items' => $cart->getTotalQuantity(), 'total' => $cart->getTotal()); } else { $cartTotals = array('items' => 0, 'total' => 0); } $menu->addChild('cart', array('route' => 'sylius_cart_summary', 'linkAttributes' => array('title' => $this->translate('sylius.frontend.menu.main.cart', array('%items%' => $cartTotals['items'], '%total%' => $this->currencyHelper->convertAndFormatAmount($cartTotals['total'])))), 'labelAttributes' => array('icon' => 'icon-shopping-cart icon-large')))->setLabel($this->translate('sylius.frontend.menu.main.cart', array('%items%' => $cartTotals['items'], '%total%' => $this->currencyHelper->convertAndFormatAmount($cartTotals['total'])))); if ($this->securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) { $route = $this->request === null ? '' : $this->request->get('_route'); if (1 === preg_match('/^(sylius_account)/', $route)) { $menu->addChild('shop', array('route' => 'sylius_homepage', 'linkAttributes' => array('title' => $this->translate('sylius.frontend.menu.account.shop')), 'labelAttributes' => array('icon' => 'icon-th icon-large', 'iconOnly' => false)))->setLabel($this->translate('sylius.frontend.menu.account.shop')); } else { $menu->addChild('account', array('route' => 'sylius_account_homepage', 'linkAttributes' => array('title' => $this->translate('sylius.frontend.menu.main.account')), 'labelAttributes' => array('icon' => 'icon-user icon-large', 'iconOnly' => false)))->setLabel($this->translate('sylius.frontend.menu.main.account')); } $menu->addChild('logout', array('route' => 'sylius_user_security_logout', 'linkAttributes' => array('title' => $this->translate('sylius.frontend.menu.main.logout')), 'labelAttributes' => array('icon' => 'icon-off icon-large', 'iconOnly' => false)))->setLabel($this->translate('sylius.frontend.menu.main.logout')); } else { $menu->addChild('login', array('route' => 'sylius_user_security_login', 'linkAttributes' => array('title' => $this->translate('sylius.frontend.menu.main.login')), 'labelAttributes' => array('icon' => 'icon-lock icon-large', 'iconOnly' => false)))->setLabel($this->translate('sylius.frontend.menu.main.login')); $menu->addChild('register', array('route' => 'sylius_user_registration', 'linkAttributes' => array('title' => $this->translate('sylius.frontend.menu.main.register')), 'labelAttributes' => array('icon' => 'icon-user icon-large', 'iconOnly' => false)))->setLabel($this->translate('sylius.frontend.menu.main.register')); } if ($this->securityContext->isGranted('ROLE_ADMINISTRATION_ACCESS') || $this->securityContext->isGranted('ROLE_PREVIOUS_ADMIN')) { $routeParams = array('route' => 'sylius_backend_dashboard', 'linkAttributes' => array('title' => $this->translate('sylius.frontend.menu.main.administration')), 'labelAttributes' => array('icon' => 'icon-briefcase icon-large', 'iconOnly' => false)); if ($this->securityContext->isGranted('ROLE_PREVIOUS_ADMIN')) { $routeParams = array_merge($routeParams, array('route' => 'sylius_switch_user_return', 'routeParameters' => array('username' => $this->securityContext->getToken()->getUsername(), '_switch_user' => '_exit'))); } $menu->addChild('administration', $routeParams)->setLabel($this->translate('sylius.frontend.menu.main.administration')); } return $menu; }
/** * Builds frontend cart menu. * * @return ItemInterface */ public function createCartMenu() { $menu = $this->factory->createItem('root', array('childrenAttributes' => array('class' => 'dropdown cartMenu'))); $menu->setCurrentUri($this->request->getRequestUri()); if ($this->cartProvider->hasCart()) { $cart = $this->cartProvider->getCart(); $cartTotals = array('items' => $cart->getTotalQuantity(), 'total' => $cart->getTotal()); } else { $cartTotals = array('items' => 0, 'total' => 0); } $menu->addChild('cart', array('route' => 'sylius_cart_summary', 'linkAttributes' => ['title' => $this->translate('sylius.frontend.menu.main.cart', array('%items%' => $cartTotals['items'], '%total%' => $this->currencyHelper->convertAndFormatAmount($cartTotals['total']))), 'class' => 'dropdown-toggle'], 'labelAttributes' => array('icon' => 'icon-shopping-cart icon-large')))->setLabel($this->translate('sylius.frontend.menu.main.cart', array('%items%' => $cartTotals['items'], '%total%' => $this->currencyHelper->convertAndFormatAmount($cartTotals['total'])))); //TODO: add items in cart $this->eventDispatcher->dispatch(MenuBuilderEvent::FRONTEND_MAIN, new MenuBuilderEvent($this->factory, $menu)); return $menu; }
/** * Convert and format amount. * * @param integer $amount * @param string|null $currency * * @return string */ public function convertAndFormatAmount($amount, $currency = null) { return $this->helper->convertAndFormatAmount($amount, $currency); }