【问题标题】:Generate menu in Zend Framework在 Zend Framework 中生成菜单
【发布时间】:2010-11-09 22:48:40
【问题描述】:

我是 ZF 的新手,即使是简单的任务也有问题。

我想在每个页面上动态生成菜单。为此,我应该用数据填充$this->view。好的,但要做到这一点,我必须在我制作的每个控制器中分别填充视图。这会导致代码重复。

我看到的最自然的解决方案是为我的所有控制器创建基本控制器类,但我读到这在 ZF 中不是一个好的做法。那么我该怎么做呢?即使只是一行重复的代码(例如$this->view->menu = $reusableObject->generateMenuData()),我也不喜欢。

这种解决方案的最佳做法是什么?你怎么能解决这个问题?

我正在使用 ZF 1.11。

编辑:我想提一下,我很高兴知道如何使用某种 phtml 文件而不是连接 html 标签来做到这一点。

EDIT2:重点是,我对导航链接并不真正感兴趣。而不是带有链接的菜单,例如。最新帖子的列表,但在每个页面上,所以在每个控制器中。我对“如何在 ZF 中处理这种东西”特别感兴趣。

【问题讨论】:

    标签: php zend-framework


    【解决方案1】:

    Zend Framework 有一个Navigation component:

    Zend_Navigation 是一个用于管理指向网页的指针树的组件。简单地说:它可以用于创建菜单、面包屑、链接和站点地图,或者用作其他导航相关目的的模型。

    它还有一些ViewHelpers to render various navigational elements

    • 面包屑,用于呈现当前活动页面的路径。
    • 链接,用于呈现导航头部链接(例如)
    • 菜单,用于渲染菜单。
    • 站点地图,用于呈现符合 » Sitemaps XML 格式的站点地图。
    • 导航,用于代理对其他导航助手的调用。

    为防止代码重复,use a Controller plugin 配置 Zend_Navigation 实例并将其设置为查看或使用 Zend_Application_Resource_Navigation 从您的 application.ini 配置它,然后会自动分配它到 View Helpers。

    重新编辑

    您可以将Zend_Navigation 用于任意菜单,而不仅仅是主导航。只需按照您认为合适的方式对其进行配置,然后使用适当的助手进行渲染。如果导航助手都不是您要查找的,只需编写一个助手或部分执行所需的输出。

    Whether you use a Controller Plugin to configure and inject it into the View or use a Helper that queries the Model for your Blog Post in the View Layout is up to you.两者都一样好和可能。

    【讨论】:

    • 延迟 8 秒 :)。您可以使用应用程序资源插件全局配置导航。请参阅我的答案中的链接。
    • @prosty 我不明白你的编辑。使用上面建议的组件时,您不会连接任何字符串。这一切都通过 Helpers 完成,并且 Zend_Navigation 可以通过编程方式进行配置。
    • 我不是真的在考虑菜单,而是在考虑各种动态侧边栏,所以导航组件不是我需要的。我写了一个关于菜单的问题,但我真的在考虑其他侧边栏,例如:带有最新帖子标题的动态框、带有最新 cmets 的动态框等。
    • 非常感谢您的最新编辑(带有链接)。我认为插件是我需要的。我不知道我可以在视图中注入一些东西。我之前在考虑助手,但我找不到如何使用助手而不返回一串html,而是使用单独的phtml文件的助手(我的第一次编辑)。帮手可以吗?谢谢你的回答。
    • @prostynick 看看类似菜单视图助手 (framework.zend.com/manual/en/…) 的东西。它允许您设置部分视图以用于渲染
    【解决方案2】:

    使用Zend_Navigation。您甚至可以使用 application resource plugin 从配置文件中对其进行配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      相关资源
      最近更新 更多