动态设置视图目录

时间:2009-08-07 17:11:31

标签: zend-framework

我正在使用ZF制作客户门户网站应用程序。门户网站需要为不同的公司品牌服务。所以我需要使用所有相同的后端代码/控制器/等,但是根据主机名动态更改视图目录。

现在我的视图目录结构如下所示:

/application/views/scripts/brand1/
/application/views/scripts/brand1/index/index.phtml
/application/views/scripts/brand1/error/error.phtml
/application/views/scripts/brand2/
/application/views/scripts/brand2/index/index.phtml
/application/views/scripts/brand2/error/error.phtml
/application/views/scripts/brand3/
/application/views/scripts/brand3/index/index.phtml
/application/views/scripts/brand3/error/error.phtml
and so on.

我正在使用bootstrap.php中的addScriptPath()函数,如此

protected function _initView()
{
    $view = new Zend_View();
    $view->doctype('XHTML1_STRICT');
    $view->env = APPLICATION_ENV;
    $view->addScriptPath(APPLICATION_PATH . '/views/scripts/brand1');
    $view->addHelperPath(APPLICATION_PATH . '/views/helpers');

    ...
}

然而,当它运行时,它正在使用/views/scripts/brand1/(action).phtml寻找所有视图,而不是使用正确的方案/ view / scripts / brand1 /(controller)/(动作)查找视图)一个.phtml

tl; dr是否可以动态选择视图目录并使其像默认的/views/scripts/(controller)/(action).phtml行为一样工作?

1 个答案:

答案 0 :(得分:1)

我知道在发布这里之后我会找到答案。如果其他人遇到同样的问题,解决方案是使用:

$view->setBasePath(APPLICATION_PATH . '/views/brand1');

然后将目录结构修改为:

/application/views/brand1/scripts/...