如何使用Zend_Navigation实现面包屑导航

4

如何使用Zend_Navigation为ZendFramework应用程序实现面包屑导航?有哪些最佳实践/建议/技巧?在哪里以及如何定义页面层次结构是最佳方法?

2个回答

7
获取面包屑导航非常简单:
  • register your Zend_Navigation object that you created in your bootstrap (or some other place) in the Zend_Registry with key Zend_Navigation. That way the object will be caught up by all navigation view-helpers.
  • if you're using the new Zend_Application-style bootstrapping you can simply use the Zend_Application_Resource_Navigation resource to setup navigation. Just set resources.navigation.storage.registry = true in your configuration.
  • you can then simply

    echo $this->navigation()->breadcrumbs()
    

    in your view or layout script.

谈到如何定义页面层级结构,如果你有一个规模较小且比较静态的网站,可以简单地在配置中定义页面(使用新的Zend_Application-引导方法):

resources.navigation.pages.home.label       = "Home"
resources.navigation.pages.home.action      = "index"
resources.navigation.pages.home.controller  = "index"
resources.navigation.pages.login.label      = "Login"
resources.navigation.pages.login.action     = "login"
resources.navigation.pages.login.controller = "users"
resources.navigation.pages.users.label      = "Users"
resources.navigation.pages.users.action     = "list"
resources.navigation.pages.users.controller = "users"
resources.navigation.pages.users.pages.show.label      = "Show"
resources.navigation.pages.users.pages.show.action     = "show"
resources.navigation.pages.users.pages.show.controller = "users"
...

或者您可以使用额外的配置文件,或者在前端控制器插件或操作助手中构建您的页面层次结构。例如,如果您有一个相当大的站点结构,并且不想在每个请求上实例化整个站点地图,则可以这样做。这样,您还可以插入动态页面,例如其标签是基于请求参数动态创建的。


很棒的答案。我们有一个控制器插件,用于生成整个站点的导航容器,并为后续请求进行缓存。对于小型站点,强烈推荐使用配置解决方案。 - David Snabel-Caunt

5

我发现使用Zend_Config_XML和一个XML文件作为导航配置是一种顺畅的方式来实现这个。谢谢。 - farzad
谢谢Farzad。虽然INI文件写起来更短(没有结束标签等),但我发现XML文件更简单易懂,也更容易实现。 - wenbert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接