Zend View Helper奇怪的问题

时间:2010-07-21 21:00:16

标签: zend-framework view helper base-url

我一直在使用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。:由于我的脑海中尚不清楚,也许有人可以告诉我:在网站的所有模块中都可以找到模块中声明的助手? (本地开发人员告诉我,因为它在本地工作,但是上传的项目有什么问题?)。

感谢。

3 个答案:

答案 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(); 区分大小写