在我的应用程序中,我应该定义我的顶级和低级页面以供Zend Navigation使用?我的顶级导航栏视图助手将与生成子导航的视图助手分开。
答案 0 :(得分:3)
我通常在控制器插件中执行此操作。在这里,我可以根据当前路径或请求参数创建导航,然后在重新设计导航时,轻松地从应用程序资源传递到视图/布局并切换到另一个。
答案 1 :(得分:3)
更简单的方法是在一个地方定义所有导航。它支持无限制的嵌套(子)页面,这意味着您可以将主菜单作为基本级别,然后是子菜单的每个主页面下的子页面。使用View Helpers,您可以轻松地自动输出当前活动页面的子页面菜单。
这样可以将您的所有导航保存在一个位置,以便将来维护。
例如,我使用Application Resource在application.ini文件中定义了我的站点范围导航,然后在我的视图脚本中使用Navigation View Helpers格式化我的菜单。
这是我正在处理的项目中的application.ini文件导航配置的一个小摘录:
resources.navigation.pages.exhibits.label = "Exhibits"
resources.navigation.pages.exhibits.controller = "exhibits"
resources.navigation.pages.exhibits.action = "index"
resources.navigation.pages.exhibits.pages.index.label = "Search Exhibitors"
resources.navigation.pages.exhibits.pages.index.controller = exhibits
resources.navigation.pages.exhibits.pages.index.action = index
resources.navigation.pages.exhibits.pages.search.label = "Search Exhibits"
resources.navigation.pages.exhibits.pages.search.controller = exhibits
resources.navigation.pages.exhibits.pages.search.action = "search"
resources.navigation.pages.exhibits.pages.new.label = "New Exhibitor"
resources.navigation.pages.exhibits.pages.new.controller = exhibits
resources.navigation.pages.exhibits.pages.new.action = "new"
resources.navigation.pages.exhibits.pages.import.label = "Import Exhibits"
resources.navigation.pages.exhibits.pages.import.controller = exhibits
resources.navigation.pages.exhibits.pages.import.action = "import"
resources.navigation.pages.sales.label = "Sales"
resources.navigation.pages.sales.controller = "sales"
resources.navigation.pages.sales.action = index
resources.navigation.pages.sales.pages.index.label = "Review/Search"
resources.navigation.pages.sales.pages.index.controller = sales
resources.navigation.pages.sales.pages.index.action = index
resources.navigation.pages.sales.pages.edit.label = Add/Edit Sales
resources.navigation.pages.sales.pages.edit.controller = sales
resources.navigation.pages.sales.pages.edit.action = edit
resources.navigation.pages.sales.pages.flags.label = Flags/Problems
resources.navigation.pages.sales.pages.flags.controller = sales
resources.navigation.pages.sales.pages.flags.action = flags
在我的layout.phtml文件中:
<div id='mainmenu'>
<?php echo $this->navigation()->menu()->setMaxDepth(0); ?>
</div> <!-- #mainmenu -->
<div id='submenu'>
<?php echo $this->navigation()->menu()->setOnlyActiveBranch(true)
->setMinDepth(1)
->setMaxDepth(1); ?>
</div> <!-- #submenu -->
因此,当用户访问“Exhibits”页面时,他们只会看到该页面的子项,并且与“销售”页面相同。非常简单而且非常有效。