修改Zend_ViewHelper_Pagination_Controller部分路径

时间:2011-05-21 11:39:41

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

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

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

正如您所看到的,我有一些特定于模块/控制器/操作的视图脚本。这些视图位于相应的路径中(在这种情况下类似于modules/blog/views。我还有一个更通用的视图目录,位于我的应用程序的根目录中。

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

然而,这不起作用。 ViewHelper始终在相应的模块文件夹中查找视图脚本。

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

1 个答案:

答案 0 :(得分:3)

正如您所见here,因为ZF 1.6.2分页控件可以使用数组而不是部分参数的字符串,并在此数组中设置1st的名称部分和第二个模块名称。这仍然是无证件

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

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

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

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

现在,您正在使用共享文件夹。你shoudl已经将它作为Zend_View的共享文件夹以这种方式安装(在Boostrap或ressource代码中):

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

或更好:

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

然后你不应该要求指定任何模块目录。 Zend_View应该始终检查此文件夹中的部分内容。