我们有一个开发人员代码,他在php中做过。当我们研究代码时,我们注意到所有视图都将 html 作为其扩展而不是 phtml 。我们通过将文件重命名为phtml来检查,并且它给出了错误。令人惊奇的是,他们没有在应用程序中完成此操作,他们已经在Zend Level完成了这项工作。
如果我用新的下载替换库目录中的zend框架,该应用程序将停止工作。说找不到视图
有谁知道他们是如何做到这一点的(修改后的ZF来搜索html而不是phtml文件)?
还有一件事:
在整个地方,他正在使用保存基本网址的变量$this->baseURL
(不是$this->baseUrl()
,由zF提供)。它不是一个帮手,我检查过,似乎无法在代码中的任何地方找到声明,但仍然神奇地通过所有控制器和视图可用。他们是如何实施的?我搜索了所有文件,但无法定义baseURL
或将baseURL
选项写入AUTH
,STORAGE
或其他任何内容。那他是怎么做到的?再次修改zf?
答案 0 :(得分:2)
他们可能更改了Zend Layout类文件Zend/Layout.php
。
您可以检查protected $_viewSuffix = 'html';
而不是默认的phtml。
您可以通过在引导程序中添加以下内容来解决此问题,以便升级Zend Framework文件。
protected function _initViewSuffix()
{
Zend_Layout::getMvcInstance()->setViewSuffix('html');
}
至于$ baseURL变量,可以通过插件或动作助手来设置。
如果您获得了视图对象,则可以执行$view->baseURL = 'xxx';
之类的操作以使其可用。这可以通过插件或动作助手来完成。
希望有所帮助。
答案 1 :(得分:2)
查看Zend/Controller/Action/Helper/ViewRenderer.php
您应该找到的地方
protected $_viewSuffix = 'html'
更改视图后缀的更好方法是将其添加到application/Bootstrap.php
/**
* Set default view suffix to .html (see http://framework.zend.com/issues/browse/ZF-5301)
*/
protected function _initViewSuffix()
{
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setViewSuffix('html');
}
或者您可以通过所有控制器中的此init方法更改它
public function init()
{
$this->_helper->viewRenderer->setViewSuffix('html');
}
drew010 所提及的 Zend_Layout
只会更改布局的后缀,而不会更改视图的后缀。