/** * Gets the 'knp_menu.matcher' service. * * This service is shared. * This method always returns the same instance of the service. * * @return \Knp\Menu\Matcher\Matcher A Knp\Menu\Matcher\Matcher instance. */ protected function getKnpMenu_MatcherService() { $this->services['knp_menu.matcher'] = $instance = new \Knp\Menu\Matcher\Matcher(); $instance->addVoter($this->get('knp_menu.voter.router')); return $instance; }
public function mainBreadcrumb() { $menu = $this->container->get('newscoop_newscoop.menu.main'); $matcher = new \Knp\Menu\Matcher\Matcher(); $matcher->addVoter(new \Knp\Menu\Matcher\Voter\UriVoter($_SERVER['REQUEST_URI'])); $treeIterator = new \RecursiveIteratorIterator(new \Knp\Menu\Iterator\RecursiveItemIterator(new \ArrayIterator(array($menu))), \RecursiveIteratorIterator::SELF_FIRST); $iterator = new \Knp\Menu\Iterator\CurrentItemFilterIterator($treeIterator, $matcher); // Set Current as an empty Item in order to avoid exceptions on knp_menu_get $current = new \Knp\Menu\MenuItem('', $this->factory); foreach ($iterator as $item) { $item->setCurrent(true); $current = $item; break; } return $current; }