2012-04-20 24 views
0

使用zend框架我如何創建單層菜單?zend導航使用xml文件的單層菜單

我按照教程和人創建了一個兩級下拉菜單。我想要移回家。我已經修改了navigation.xml文件幾次,並導致了一個致命的錯誤。

我需要用什麼xml標記來提升家庭的孩子作爲父級菜單?在我不需要一個主頁按鈕。

期望的結果:

  • 爲什麼
  • 什麼
  • 揚聲器
  • 資源

當前結果:

  • •誰

    •什麼

    •時

    •爲什麼

當前navigation.xml文件:

<?xml version="1.0" encoding="UTF-8" ?> 
<configdata> 
    <nav> 
    <home> 
     <label>Home</label> 
     <controller>page</controller> 
     <action>index</action> 
     <module>default</module> 
     <pages> 
     <why> 
      <label>why</label> 
      <controller>page</controller> 
      <action>why</action> 
      <module>default</module> 
     </why> 
     <who> 
      <label>who</label> 
      <controller>page</controller> 
      <action>who</action> 
     </who> 
     <resources> 
      <label>resources</label> 
      <controller>page</controller> 
      <action>resources</action> 
     </resources> 
     <signin> 
      <label>sign in</label> 
      <controller>account</controller> 
      <action>login</action> 
      <module>default</module> 
     </signin> 
     </pages> 
    </home> 
    </nav> 

...

應用/ bootstrap.php中:

<?php function _initViewHelpers() { 
    $this->bootstrap('layout); 
    // ... Skipping to relevant part 
    $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); 
    $navContainer = new Zend_Navigation($navContainerConfig); 
    $view->navigation($navContainer); 
} ?> 

佈局/ default.phtml

<div class="navigation"><?php print $this->navigation(); ?></div> 
+0

你可以提供一些關於如何渲染導航的代碼嗎? – Liyali 2012-04-20 04:08:54

+0

當然是的。我的錯。 – chrisjlee 2012-04-20 05:11:43

回答

1
<?xml version="1.0" encoding="UTF-8" ?> 
<configdata> 
    <nav> 
    <why> 
     <label>why</label> 
     <controller>page</controller> 
     <action>why</action> 
     <module>default</module> 
    </why> 
    <who> 
     <label>who</label> 
     <controller>page</controller> 
     <action>who</action> 
    </who> 
    <resources> 
     <label>resources</label> 
     <controller>page</controller> 
     <action>resources</action> 
    </resources> 
    <signin> 
     <label>sign in</label> 
     <controller>account</controller> 
     <action>login</action> 
     <module>default</module> 
    </signin> 
</nav> 
1

什麼setMaxDepth()setMinDepth()?你可以設置你想要有多深你的菜單的顯示效果:

<?= $this->navigation()->menu() 
         ->setMinDepth(1) 
         ->setMaxDepth(2) 
         ->render() . PHP_EOL; ?> 

此外,您還可以找到有關navigation view helper in the official manual的更多信息。這些信息通常比您可以在教程中找到的信息更相關。

1

你應該能夠調整你的容器,只顯示你想要顯示的鏈接。在這種情況下,您只需從xml文件中刪除Home元素。

<?xml version="1.0" encoding="UTF-8" ?> 
<configdata> 
    <nav> 
     <pages> 
     <why> 
      <label>why</label> 
      <controller>page</controller> 
      <action>why</action> 
      <module>default</module> 
     </why> 
     <who> 
      <label>who</label> 
      <controller>page</controller> 
      <action>who</action> 
     </who> 
     <resources> 
      <label>resources</label> 
      <controller>page</controller> 
      <action>resources</action> 
     </resources> 
     <signin> 
      <label>sign in</label> 
      <controller>account</controller> 
      <action>login</action> 
      <module>default</module> 
     </signin> 
     </pages> 
    </nav> 
0

當您刪除從XML文件中的主菜單,你會得到一個異常

Zend_Navigation_Exception:無效的參數:無法確定類在C實例:\ WWW \項目\ library \ Zend \ Navigation \ Page.php on line 235

+0

你必須刪除

+0

我正在使用Zend框架1.12 – Seif 2012-09-25 12:00:17