Magento模块已重命名,但Magento一直在寻求旧的帮助程序类

时间:2011-06-23 16:14:03

标签: magento

Magento,版本CE 1.4.2,1.5.0.1,1.5.1.0

我必须根据所有食谱config.xmlsystem.xmletc/module/Mycompany_Mypaymentmodule.xml调整Magento的付款模块,这些模式都可以正常使用。

但是最近,我进行了双重检查,发现了一个错误: 在我的config.xml中,我放了:

<config>
<modules>
    <Mage_Mycompany>
        <version>0.1.0</version>
    </Mage_Mycompany>
</modules>

...

那是因为最初,模块应该放在社区文件夹中 遵循这些准则,我重写了类,xml等等以反映本地代码池。这也很顺利(除了我调试过的错误)。

但是,在config.xml内,我已重命名modules-tag,如下所示:

<config>
    <modules>
        <Mycompany_Mypaymentmodule>
        <version>0.1.0</version>
        </Mycompany_Mypaymentmodule>
</modules>

奇怪的是,当我转到后端的付款方式时,Magento现在一直在问我旧的Helper类文件,导致:

  

致命错误:在第520行的路径\到\ app \ Mage.php中找不到“Mage_Mycompany_Helper_Data”类

换句话说,Magento一直要求我的旧的,预先重命名的模块的帮助类,当然无处可寻。

我在所有文件中进行了大量搜索,但找不到字符串Mage_Mycompany,所以我的猜测是Magento试图从数据库表中加载这个帮助程序类。当然,我已经清除缓存并多次重建所有索引,并删除了所有缓存文件。我几乎检查了所有数据库表,但无济于事。

其次,当我在app/code/community/Mage/Mycompany/Helper/Data.php中手动创建帮助器类时,一切顺利,对我来说这听起来很奇怪,因为类本身不应该被调用(因为它从未在任何config.xml中提及)

我必须遗漏一些东西,也许类名是动态生成的,但我真的不知道如何避免它或修复它...所以任何帮助都表示赞赏!

2 个答案:

答案 0 :(得分:2)

第一步当然是清除你的缓存。

如果清除缓存不起作用。

步骤2:数据助手类用于翻译模块的字符串。也就是说,每个数据助手都有一个方法

$helper->__('Translate this symbol');

将根据该模块的帮助文件翻译一个字符串。

在整个系统中,有几个XML文件可能需要翻译某些节点。语法看起来像这样。

<dhl translate="label" module="usa">
    <label>The Label</label>
</dhl>

在这里,您要告诉magento翻译dhl中包含的“label”节点,并使用usa模块执行此操作。也就是说,使用实例化的帮助程序,如

$Mage::getModel('usa/data');
//same thing as above, helpers default to data
Mage::getModel('usa');

翻译标签

$helper->__('The Label');

我的猜测是你的旧文件之一还有你的旧模块配置用于翻译

<sometag module="mycompany" translate="someothertag" />

让magento找到一个不再存在的助手,并且繁荣,这是你的错误。

答案 1 :(得分:0)

当您调用翻译帮助程序时,会加载Tha数据帮助程序,即:Mage::helper('modulename')->__("some string to translate") 在您的配置.xml中,您是否已声明模块的帮助程序类?:

<config>
    ...
    <global>
        ...
        <helpers>
            <yourmodule>
                <class>Yourcompanyname_Yourmodule_Helper</class>
            </yourmodule>
        </helpers>
        ...
    </global>
    ...
</config>