代码之家  ›  专栏  ›  技术社区  ›  prostynick

在Zend框架中生成菜单

  •  0
  • prostynick  · 技术社区  · 14 年前

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

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

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

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

    我用的是ZF 1.11。

    编辑:我想说的是,我很高兴知道如何使用某种phtml文件,而不是具体化HTML标记。

    伊迪丝2:重点是,我对导航链接不感兴趣。而不是菜单上的链接,例如最新文章的列表,但在每个页面上,所以在每个控制器中。我特别感兴趣的是“如何在ZF中使用这种东西”。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Community CDub    8 年前

    Zend框架具有 Navigation component :

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

    它也有一些 ViewHelpers to render various navigational elements 在它之外:

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

    为了防止代码重复, use a Controller plugin 它配置了 Zend_Navigation 实例并将其设置为查看或使用 Zend_Application_Resource_Navigation 从您的 应用程序.ini ,然后自动将其分配给视图帮助程序。

    重新编辑

    你可以用 Zend_导航 对于任意菜单,不仅仅是主导航。只需按您认为合适的方式配置它,然后用适当的助手呈现它。如果没有导航助手是您要找的,只需编写一个助手或一个完成所需输出的部分。

    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. 两者都是同样好的和可能的。

        2
  •  1
  •   Phil    14 年前

    使用 Zend_Navigation . 甚至可以从配置文件中使用 application resource plugin .

    推荐文章