2015-08-27 45 views
0

我有以下問題,我用zend框架2的原始文檔中的數據對它進行了測試。我不知道我是否錯過了某些東西,或者它是否只是缺少的功能。ZF2導航訂單

在下面的示例中,我創建了具有兩個級別的導航,然後使用echo打印導航標籤。如您所見,我爲第一級頁面和第二級頁面設置了訂單。如果你看看我的輸出結果,你可以看到只有第一級頁面按正確的順序排列。第二級頁面按正確的順序排列。

對於放在大於等級1的導航中的每個級別,訂單都沒有改變。

你們中的任何一個人都有同樣的問題,或者可以告訴我iam做錯了什麼?或者這是zend-navigation模塊的一個未給出的功能?

由於

腳本

$container = new \Zend\Navigation\Navigation(
    array(
     array(
      'label' => 'ACL page 1 (guest)', 
      'uri' => '#acl-guest', 
      'resource' => 'nav-guest', 
      'order' => 777, 
      'pages' => array(
       array(
        'label' => 'ACL page 1.1 (foo)', 
         'uri' => '#acl-foo', 
         'resource' => 'nav-foo', 
         'order' => 666 
       ), 
        array(
         'label' => 'ACL page 1.2 (bar)', 
         'uri' => '#acl-bar', 
         'resource' => 'nav-bar', 
       ), 
        array(
         'label' => 'ACL page 1.3 (baz)', 
         'uri' => '#acl-baz', 
         'resource' => 'nav-baz', 
       ), 
        array(
         'label' => 'ACL page 1.4 (bat)', 
         'uri' => '#acl-bat', 
         'resource' => 'nav-bat', 
         'order' => 111 
       ), 
      ), 
     ), 
      array(
       'label' => 'ACL page 2 (member)', 
       'uri' => '#acl-member', 
       'resource' => 'nav-member', 
       'order' => 555 
     ) 
    ) 
); 

    foreach ($container as $page) { 
     echo $page->label."<br>"; 
     if ($page->hasPages()) { 
      foreach ($page->getPages() as $page2) { 
       echo $page2->label."<br>"; 
      } 
     } 
    } 
    die("ASD"); 

輸出

ACL page 2 (member) 
ACL page 1 (guest) 
ACL page 1.1 (foo) 
ACL page 1.2 (bar) 
ACL page 1.3 (baz) 
ACL page 1.4 (bat) 
ASD 

回答

2

方法$page->getPages()返回陣列(docs)。元素僅在列表是導航對象時排序。

嘗試:

foreach ($container as $page) { 
    echo $page->label."<br>"; 
    if ($page->hasPages()) { 
     $subpages = new \Zend\Navigation\Navigation($page->getPages()); 
     foreach ($subpages as $page2) { 
      echo $page2->label."<br>"; 
     } 
    } 
} 
+1

https://github.com/zendframework/zend-navigation/issues/3 是啊,你是對的。 getPages()是錯誤的。我必須直接使用頁面,因爲頁面是一個RecursiveIterator本身。 – Stillmatic1985