public function __invoke($entry, $template) { if (isset($entry['modulContent']['nav'])) { $nav = $entry['modulContent']['nav']; } else { $nav = $entry['modulContent']; } $container = new \Zend\Navigation\Navigation(); $container->addPages($nav); return $this->view->buildsbreadcrumb($container); }
/** * Invoke plugin and test various valid and invalid parameter sets */ public function testInvoke() { // Navigation structure for tests. It contains the label "test" 3 times // (once on a top menu with no submenu, twice on different submenus) to // be able to test for correct location of labels. $data = array(array('label' => 'test', 'uri' => 'top0'), array('label' => 'top1', 'uri' => 'top1', 'pages' => array(array('label' => 'test', 'uri' => 'sub1'))), array('label' => 'top2', 'uri' => 'top2', 'pages' => array(array('label' => 'test', 'uri' => 'sub2')))); // Test first top menu $navigation = new \Zend\Navigation\Navigation($data); $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation); $plugin('test'); $this->assertTrue($navigation->findOneByUri('top0')->isActive()); // Test last top menu $navigation = new \Zend\Navigation\Navigation($data); $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation); $plugin('top2'); $this->assertTrue($navigation->findOneByUri('top2')->isActive()); // Test both submenus (ensure that the correct one is picked) $navigation = new \Zend\Navigation\Navigation($data); $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation); $plugin('top1', 'test'); $this->assertTrue($navigation->findOneByUri('sub1')->isActive()); $navigation = new \Zend\Navigation\Navigation($data); $plugin = new \Console\Mvc\Controller\Plugin\SetActiveMenu($navigation); $plugin('top2', 'test'); $this->assertTrue($navigation->findOneByUri('sub2')->isActive()); // Test exception on invalid top menu try { $plugin('invalid'); $this->fail('No exception thrown on invalid $mainPage'); } catch (\Exception $e) { $this->assertEquals('Invalid top menu page: invalid', $e->getMessage()); } // Test exception on invalid submenu if top menu does not have a submenu try { $plugin('test', 'invalid'); $this->fail('No exception thrown on invalid $subPage'); } catch (\Exception $e) { $this->assertEquals('Invalid submenu page: invalid', $e->getMessage()); } // Test exception on invalid submenu if top menu has a submenu try { $plugin('top1', 'invalid'); $this->fail('No exception thrown on invalid $subPage'); } catch (\Exception $e) { $this->assertEquals('Invalid submenu page: invalid', $e->getMessage()); } }
protected function getPages(ServiceLocatorInterface $serviceLocator) { if (null === $this->pages) { //FETCH data from table menu : $fetchMenu = $serviceLocator->get('menu')->fetchAll(); $container = new \Zend\Navigation\Navigation(); foreach ($fetchMenu as $key => $row) { if (null !== $row['parent_menu_id']) { continue; } $container->addPage(array('id' => $row['menu_id'], 'label' => $row['label'], 'uri' => $row['uri'], 'icon' => $row['icon'])); $i = 0; $menu_items = $fetchMenu; foreach ($menu_items as $item_key => $item) { if ($item['parent_menu_id'] === null) { continue; } if ($row['menu_id'] === $item['parent_menu_id']) { $subPage = array('id' => $item['menu_id'], 'label' => $item['label'], 'icon' => $item['icon']); if (null !== $item['uri']) { $subPage['uri'] = $item['uri']; } else { if (null !== $item['route']) { $subPage['route'] = $item['route']; } } $container->findBy('id', $row['menu_id'])->addPage($subPage); $i++; unset($fetchMenu[$item_key]); } } if ($i === 0) { if (null !== $row['uri']) { $container->findBy('id', $row['menu_id'])->setUri($row['uri']); } else { if (null !== $row['route']) { $container->findBy('id', $row['menu_id'])->setUri($row['uri']); } } unset($fetchMenu[$key]); } } $this->pages = $container; } return $this->pages; }
public function testOptionEscapeLabelsAsFalse() { $options = array( 'escapeLabels' => false ); $container = new \Zend\Navigation\Navigation($this->_nav2->toArray()); $container->addPage(array( 'label' => 'Badges <span class="badge">1</span>', 'uri' => 'badges' )); $expected = $this->_getExpected('menu/escapelabels_as_false.html'); $actual = $this->_helper->renderMenu($container, $options); $this->assertEquals($expected, $actual); }
public function testRenderingWithPageClassToLi() { $options = array('addClassToListItem' => true); $container = new \Zend\Navigation\Navigation($this->_nav2->toArray()); $container->addPage(array('label' => 'Class test', 'uri' => 'test', 'class' => 'foobar')); $expected = $this->_getExpected('menu/addclasstolistitem_as_true.html'); $actual = $this->_helper->renderMenu($container, $options); $this->assertEquals(trim($expected), trim($actual)); }