Sonata\ProductBundle\Menu\ProductMenuBuilder::createFiltersMenu PHP Method

createFiltersMenu() public method

Generates the filters menu based on $productProvider.
public createFiltersMenu ( Sonata\Component\Product\ProductProviderInterface $productProvider, array $itemOptions = [], string $currentUri = null ) : mixed
$productProvider Sonata\Component\Product\ProductProviderInterface
$itemOptions array
$currentUri string
return mixed
    public function createFiltersMenu(ProductProviderInterface $productProvider, array $itemOptions = array(), $currentUri = null)
    {
        $menu = $this->factory->createItem('filters', $itemOptions);
        $filters = $productProvider->getFilters();
        foreach ($filters as $filter => $options) {
            $menuItem = $menu->addChild($filter, array_merge(array('attributes' => array('class' => 'nav-header')), $itemOptions));
            foreach ($options as $option) {
                $filterItemOptions = array_merge(array('uri' => $this->getFilterUri($currentUri, $filter, $option)), $itemOptions);
                $menuItem->addChild($this->getFilterName($filter, $option), $filterItemOptions);
            }
        }
        return $menu;
    }

Usage Example

 /**
  * {@inheritdoc}
  */
 protected function getMenu(BlockContextInterface $blockContext)
 {
     $settings = $blockContext->getSettings();
     $menu = parent::getMenu($blockContext);
     if (null === $menu || '' === $menu) {
         $menu = $this->menuBuilder->createFiltersMenu($settings['product_provider'], array('childrenAttributes' => array('class' => $settings['menu_class'])), $settings['current_uri']);
     }
     return $menu;
 }
All Usage Examples Of Sonata\ProductBundle\Menu\ProductMenuBuilder::createFiltersMenu