我正在使用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行为一样工作?
答案 0 :(得分:1)
我知道在发布这里之后我会找到答案。如果其他人遇到同样的问题,解决方案是使用:
$view->setBasePath(APPLICATION_PATH . '/views/brand1');
然后将目录结构修改为:
/application/views/brand1/scripts/...