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);
 }
示例#2
0
 /**
  * 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;
 }
示例#4
0
    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);
    }
示例#5
0
 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));
 }