在magento中找不到助手数据


8

我编写了一个新扩展名,并尝试在Magento Admin中创建配置设置文件。清除缓存后在浏览器上运行时,出现如下错误

Fatal error: Class 'Mage_GlobalSms_Helper_Data' not found in D:\wamp\www\project\app\Mage.php on line 547

在system.log错误日志文件中,我发现以下错误:

2015-05-27T13:40:43+00:00 ERR (3): Warning: include(Mage\GlobalSms\Helper\Data.php): failed to open stream: No such file or directory  in D:\wamp\www\project\lib\Varien\Autoload.php on line 93
2015-05-27T13:40:43+00:00 ERR (3): Warning: include(): Failed opening 'Mage\GlobalSms\Helper\Data.php' for inclusion (include_path='D:\wamp\www\project\app\code\local;D:\wamp\www\project\app\code\community;D:\wamp\www\project\app\code\core;D:\wamp\www\project\lib;.;C:\php\pear')  in D:\wamp\www\project\lib\Varien\Autoload.php on line 93

我的app \ etc \ modules \文件如下:

<?xml version="1.0"?>
<config>
    <modules>
        <Php_GlobalSms>
            <active>true</active>
            <codePool>local</codePool>
            <version>0.0.1</version>
        </Php_GlobalSms>
    </modules>
</config>

我的config.xml如下:

<config>
<modules>
    <Ucs_GlobalSms>
        <version>0.0.1</version>
    </Ucs_GlobalSms>
</modules>
<admin>
     <routers>
        <adminhtml>
            <args>
                <modules>
                    <ucs_globalsms before="Mage_Adminhtml">Ucs_GlobalSms_Adminhtml</ucs_globalsms>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
<global>
    <helpers>
        <globalsms>
            <class>Ucs_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
    <models>
        <custommodule>
            <class>Ucs_GlobalSms_Model</class>
        </custommodule>
    </models>
    <events>
        <customer_register_success>
            <observers>
                <Ucs_GlobalSms_customer_register_success>
                    <type>singleton</type>
                    <class>Ucs_GlobalSms_Model_Observer</class>
                    <method>customerRegisterSuccess</method>
                </Ucs_GlobalSms_customer_register_success>
            </observers>
        </customer_register_success>
    </events>
</global>

我的Helper / Data.php如下:

<?php
class Php_GlobalSms_Helper_Data extends Mage_Core_Helper_Abstract {

}

我可以在SO上找到很多帖子,说缺少Data.php,但是一切都在那里,但我仍然遇到错误


3
你清理了<webroot>/var/cache吗?
pspahn 2015年

Answers:


10

您的帮助程序声明应如下所示:

<global>
    <helpers>
        <globalsms>
            <class>Php_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
</global>

并且您应该像这样的代码中调用您的助手:

Mage::helper('globalsms');

我进行了相应的更改,但仍然无法正常工作
蝴蝶

您看到我的system.log错误了吗?
蝴蝶

1
是。检查您的模块是否被Magento拾取。如果是这样,那么它应该按照我的描述工作。也许您应该在问题中加进您的完整信息config.xml以及您使用助手的方式
Marius

更新了完整的config.xml,我没有在任何地方调用帮助文件。如果我不声明自己遇到错误,那就是为什么我在xml中添加了helper标签
Butterfly

显示的错误表明未获取组类名称。这表明未加载config.xml或辅助程序的配置位置错误。如Marius的回答所述,它应该位于/ config / global / helpers中。(还要注意,该版本可能不应该在模块XML文件中)。
凯文·施罗德

5

中的模块名称与module.xml中的不同config.xml

我不确定自己要使用什么,Php_GlobalSms或者Ucs_GlobalSms


4

如果启用编译(系统>工具>编译),则需要禁用或重新编译。最好在开发时禁用编译功能。


2

您需要在config.xml中定义您的助手

<config>
<modules>
    <Php_GlobalSms>
        <version>0.0.1</version>
    </Php_GlobalSms>
</modules>
<admin>
     <routers>
        <adminhtml>
            <args>
                <modules>
                    <ucs_globalsms before="Mage_Adminhtml">Php_GlobalSms_Adminhtml</ucs_globalsms>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
<global>
    <models>
        <custommodule>
            <class>Php_GlobalSms_Model</class>
        </custommodule>
    </models>
    <helpers>
        <globalsms>
            <class>Php_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
    <events>
        <customer_register_success>
            <observers>
                <Php_GlobalSms_customer_register_success>
                    <type>singleton</type>
                    <class>Php_GlobalSms_Model_Observer</class>
                    <method>customerRegisterSuccess</method>
                </Php_GlobalSms_customer_register_success>
            </observers>
        </customer_register_success>
    </events>
</global>

1

您说您为管理区域创建了一个配置设置。在system.xml文件中,我假设您有类似的内容(应该有):

<php_globalsms_options translate="label" module="php_globalsms">[...]

这是Magento尝试加载助手的地方:无论您是否在任何文件中调用助手,它都会处理翻译。其他答案则说明了正确的方法:更新您的config.xml文件,并告诉Magento GlobalSms-helper位于您的模块中。


1

我有同样的问题。我已经检查了config.xml并检查了xml布局:

  <layout>
        <updates>
            <module_name>
                <file>module_name.xml</file>
            </module_name>
        </updates>
    </layout>

我在module_name.xml中做错了。我已经删除了不需要的代码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.