0

使用 zend 框架,我如何创建单级菜单?

我遵循了一个教程,该人创建了一个两级下拉菜单。我只想搬家。我已经修改了navigation.xml 文件几次,它导致了一个致命错误。

我需要什么 xml 标记来将 home 的子级提升为父级菜单?因为我根本不需要主页按钮。

期望的结果:

  • 为什么
  • 什么
  • 扬声器
  • 资源

目前的结果:

  • • 谁

    • 什么

    • 什么时候

    • 为什么

当前的 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>
4

4 回答 4

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>
于 2012-04-20T11:22:39.743 回答
1

您应该能够调整您的容器以仅显示您想要显示的链接。在这种情况下,您只需Home从 xml 文件中删除元素。

<?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>
于 2012-04-20T06:31:00.083 回答
1

setMaxDepth()和怎么样setMinDepth()?您可以设置您希望菜单呈现的深度:

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

此外,您可以在官方手册中找到有关导航视图助手的更多信息。这些信息通常比您在教程中找到的信息更相关。

于 2012-04-20T04:13:21.120 回答
0

当您从 XML 文件中删除主菜单时,您会遇到异常

Zend_Navigation_Exception: Invalid argument: Unable to determine class to instance in C:\www\project\library\Zend\Navigation\Page.php on line 235

于 2012-09-25T10:19:50.303 回答