当我最初构建我的网站时,它只处理一个接口,但现在我需要处理许多接口。
我可以检测每个请求发送哪个站点,并将每个站点与其他站点隔离,但所有站点都具有相同的视图。
有没有办法可以从同一个控制器渲染不同的视图?
我在想:
application
controller
model
site_1_view
site_2_view
这可能吗?
答案 0 :(得分:0)
$this->view->render('script.phtml');
应该有用。
答案 1 :(得分:0)
或者:
public function myAction()
{
return $this->otherAction();
}
public function otherAction()
{
}
答案 2 :(得分:0)
添加新的脚本路径以进行查看 LIFO堆栈
答案 3 :(得分:0)
只是一个想法:检测当前正在查看的网站,然后通过设置$view->setScriptPath(/path/to/site1/scripts/);
编辑:我可能在这个问题上错了,但设置它的最佳位置是preDispatch
方法中的控制器插件,因为那时你会知道模块/控制器/动作是什么请求但尚未发送:http://framework.zend.com/manual/en/zend.controller.plugins.html
答案 4 :(得分:0)
这很简单 - 我发现我可以在构造函数中设置视图基本路径:
$this->view->setBasePath("../application/site_1_view/views");
所以在public/index.php
中,我检测到URL,在会话中设置它,从我的数据库中检测名称,然后使用名称来设置基本路径:
$this->view->setBasePath("../application/".$siteName."/views");
所以应用程序结构现在是:
application
controllers
model
site_1_view
views
scripts
controllerName
ActionName
site_2_view
views
scripts
controllerName
ActionName