【问题标题】:Modifying Zend_ViewHelper_Pagination_Controller Partial-Path修改 Zend_ViewHelper_Pagination_Controller Partial-Path
【发布时间】:2011-05-21 11:39:40
【问题描述】:

我有一个 Zend-Framework 应用程序。我正在使用Zend_Controller_Front提供的模块结构。这是我的目录结构的一小段摘录(仅此问题的重要部分):

root-directory
- modules
  - blog
    - views
      - scripts
        - index_index.phtml
- views
  - pagination_control.phtml

如您所见,我有特定于模块/控制器/动作的视图脚本。这些视图位于相应的路径中(在本例中为 modules/blog/views。我还有一个更通用的视图目录,位于我的应用程序的根目录中。

我现在正在做的是在modules/blog/views/scripts/index_index.phtml 中调用PaginationControl-ViewHelper。然而,如您所知,这个 View-Helper 会渲染一个局部视图。 ViewHelper 尝试在同一目录中定位部分视图(意思是modules/blog/views/scripts。由于我想在不同的模块中使用相同的视图部分脚本(pagination_control.phtml),我想让这个视图部分可以从每个模块中访问)模块。所以我想将该文件放在根目录下的通用views-文件夹中。

但是这不起作用。 ViewHelper 总是在相应的模块文件夹中查找视图脚本。

任何人都可以帮助从我的一般views-目录访问它吗?

【问题讨论】:

    标签: php zend-framework pagination partial-views viewhelper


    【解决方案1】:

    如您所见here,因为 ZF 1.6.2 分页控件可以使用 数组 而不是字符串作为部分参数,并且在这个数组中您设置第一个部分的名称第二个是模块名称。这仍然是未记录的

    使用数组,您可以指定要使用的部分模块('common'?)。

    真正的调用将是(使用 $partial 你的第三个参数到 paginationControl() 视图助手):

    $this->view->partial($partial[0], $partial[1], $pages);
    

    如果您有一个“通用”模块,这很有用。

    现在您正在使用共享文件夹。您应该以这种方式将它安装为 Zend_View 的共享文件夹(在 Boostrap 或资源代码中):

    $view->addScriptPath("/root-directory/views");
    

    或更好:

    $view->addScriptPath("/root-directory/views/partials");
    

    然后你不应该被要求指定任何模块目录。 Zend_View 应该总是检查这个文件夹中的一个部分。

    【讨论】:

    • 非常感谢。我只测试了第二种方法,因为它就是我想要实现的。我不是通用模块的粉丝。所以第二种方法适合我:)
    猜你喜欢
    • 2014-01-11
    • 2012-05-07
    • 2017-03-27
    • 2011-07-05
    • 2014-11-30
    • 2015-08-19
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多