我一直在使用localhost(操作系统:Snow Leopard)上的zend框架项目,当我在托管服务器(共享托管)上传文件时,我遇到了一些关于我在那里使用的视图助手的错误。
更具体地说:
项目结构是这样的:(我省略了一些不相关的子文件夹,并且paranthesis中的数字仅供参考,它不包含在项目的文件夹名称中)
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>
通常我在需要基本网址时使用它(不仅在布局中,也在视图中)。我一直在应用程序的'default'模块和'admin'模块(modules / admin / ...)中使用相同的帮助器。 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-&gt; baseURL()的一行(在管理模块中调用)。
起初我想也许是因为帮助器是在另一个模块(默认模块)中声明的,管理模块中的框架找不到它。但为什么本地一切都有效?我不懂。 此外,如果我在同一个admin.phtml布局文件中将$ this-&gt; baseURL()更改为$ this-&gt; baseUrl(),则在管理模块中,一切正常(在线和本地)。
如果有人能够启发我不知道的是什么,我会很感激。
P.S。:由于我的脑海中尚不清楚,也许有人可以告诉我:在网站的所有模块中都可以找到模块中声明的助手? (本地开发人员告诉我,因为它在本地工作,但是上传的项目有什么问题?)。
感谢。
答案 0 :(得分:1)
检查这个
$这 - &GT;的baseUrl(&#39;&#39);
保持参数为null可以解决问题。 你将获得布局中的baseurl以及default.php。
答案 1 :(得分:0)
您需要使用Cmsadmin_View_Helper_
而不是Zend_View_Helper_
为视图助手添加前缀,如错误消息中所述。错误消息告诉它查找各种前缀的路径。
答案 2 :(得分:0)
替换它: -
<script src="<?php echo $this->baseURL();?>/public/js/somejavascript.js></script>
使用:
<script src="<?php echo $this->baseUrl();?>/public/js/somejavascript.js></script>
不: - 始终使用$this->baseUrl();
区分大小写