1

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

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

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

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

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

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

4

1 回答 1

3

正如您在此处看到的那样,由于 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");

And then you should'nt be required to specify any module directory. Zend_View should always check for a partial in this folder.

于 2011-05-21T12:58:58.587 回答