【发布时间】:2011-03-19 05:52:21
【问题描述】:
我一直在 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(),则在管理模块中,一切正常(在线和本地)。
如果有人能告诉我我缺少什么,我将不胜感激。
P.S.:由于我还不清楚,也许有人可以告诉我:在模块中声明的助手在网站的所有模块中都可用? (本地开发人员告诉我它是,因为它在本地工作,但是上传的项目有什么问题?)。
谢谢。
【问题讨论】:
标签: zend-framework view helper base-url