我一直在 localhost(操作系统:Snow Leopard)上开发一个 zend 框架项目,当我在托管服务器(共享托管)上上传文件时,我收到了一些关于我在那里使用的视图助手的错误。
更具体地说:
项目结构是这样的:(我省略了一些不相关的子文件夹,括号中的数字仅供参考,不包含在项目中的文件夹名称中)
application
-configs
-controllers
-layouts
--scripts
-models
-modules
--admin
---controllers
---models
---views(2)
----filters
----helpers(2)
----scripts
-views(1)
--helpers(1)
--scripts
library
public
在 helpers(1) 文件夹中,我有一个视图助手 BaseURL.php:
class Zend_View_Helper_BaseURL
{
function baseURL()
{
$fc = Zend_Controller_Front::getInstance();
return $fc->getBaseUrl();
}
}
例如,我在布局中使用它来编写 CSS 文件、JS 文件等内容的路径,如下所示:
<script src="<?php echo $this->baseURL();?>/public/js/somejavascript.js></script>
通常我在需要基本 url 时使用它(不仅在布局中,也在视图中)。我一直在应用程序的“默认”模块和“管理”模块(模块/管理/...)中使用相同的助手。Localy,一切顺利,没有问题。当我上传项目时,出现如下错误:
An error occurred
Application error
Exception information:
Message: Plugin by name 'BaseURL' was not found in the registry; used paths: Cmsadmin_View_Helper_: /path_to_site_like_public_html/application/modules/cmsadmin/views/helpers/ Zend_View_Helper_: Zend/View/Helper/
上面的错误是针对在管理布局(在管理模块中调用)中使用 $this->baseURL() 的行。
起初我想可能是因为助手是在另一个模块(默认模块)中声明的,它在管理模块中的框架中找不到。但为什么本地一切正常?我不明白。此外,如果我在同一个 admin.phtml 布局文件中将 $this->baseURL() 更改为 $this->baseUrl(),则在管理模块中,一切正常(在线和本地)。
如果有人可以启发我了解我所缺少的东西,我将不胜感激。
PS:由于我还不清楚,也许有人可以告诉我:在模块中声明的助手在网站的所有模块中都可用?(本地开发告诉我它是,因为它在本地工作,但是上传的项目有什么问题?)。
谢谢。