我有一个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
- 目录中访问它吗?
答案 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应该始终检查此文件夹中的部分内容。