0

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

谢谢。

4

3 回答 3

1

检查这个

$this->baseUrl('');

保持参数为空可能会解决问题。您将在布局和 default.php 中获得 baseurl。

于 2012-05-21T09:30:59.643 回答
0

您需要在视图助手前面加上Cmsadmin_View_Helper_而不是Zend_View_Helper_错误消息中描述的前缀。错误消息告诉它在哪些路径中查找各种前缀。

于 2010-07-21T21:03:48.663 回答
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(); 区分大小写的

于 2015-10-19T10:36:52.010 回答