Zend Framework,为同一个代码库设置多个模板


Zend Framework, setting up multiple templates for the same code base

真的不确定问题的标题是否适合整个问题。但在这里。

我目前拥有的是一个现有的SaaS项目。我们希望随着时间的推移推出一个新模板。想想谷歌是如何引入新功能的。或者其他一些网站可能带有"尝试我们的新测试版"。类型的东西。好吧,我们想要做同样的事情,然后我们最终将逐步淘汰旧的外观和感觉。

有了这个,这个应用程序是建立在Zend Framework之上的,所以通过查看文档,我可以弄清楚如何在给定的控制器上覆盖模板。但是我基本上想做的,很可能是利用这些会议。如果存在,请使用此模板。如果没有,请使用旧的。

是否可以以这种方式覆盖默认模板?例如,现在默认加载的文件是"tops.phtml",如果会话存在,我想加载"tops_v2.phtml"。因此,当找到会话时,它可以将其用作模板,而不是"tops.phtml"。

Zend Framework 1.x 解决方案:

您可以在操作中禁用ViewRenderer插件,然后手动选择模板:

public function indexAction(){
      $this->_helper->viewRenderer->setNoRender(true);
      echo $this->view->render("path/to/template/template.phtml");        
}

我认为布局是你可能想要使用的东西,正如 Richie 简要提到的。根据这个问题,我猜你还没有使用它们。最终,您可以设计一个定义整体网站外观的布局,然后每个操作模板将仅呈现页面的一个片段(将动态放置在布局的内容部分中(。

使用您选择的任何逻辑,您可以分配任意数量的布局之一以用于给定页面加载,当然您可以将其存储为用户首选项或其他内容。