【问题标题】:Helper class not found未找到帮助程序类
【发布时间】:2014-09-02 19:36:52
【问题描述】:

我正在尝试开发一个可以在 Magento 的管理端添加一个表单的扩展,但是,由于某种原因,我似乎无法在安装我的模块时加载 Magento 管理。我正处于开发的最开始,我遇到了一个在 StackOverflow 上多次报告的错误。不幸的是,在我的情况下,这些答案似乎都没有帮助。

我得到的错误是 *Fatal error: Class 'Mage_Mycompany_Logviewer_Helper_Data' not found in C:\XAMPP\htdocs\magento\app\Mage.php on line 546*。这应该意味着 Magento 找不到帮助程序类,但它在那里并且它的名称与它正在寻找的那个匹配(除了开头的“Mage_”,我从来没有在任何其他扩展中使用过)。

2012/07/29 更新
一旦我登录到 Magento Admin,就会发生错误。当我点击“登录”时,我得到的只是一个错误页面,没有呈现任何内容。

这是我目前所有文件的内容。

config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Mycompany_Logviewer>
            <version>0.1.0</version>
        </Mycompany_Logviewer>
    </modules>

    <global>
        <models>
            <logviewer>
                <class>Mycompany_Logviewer_Model</class>
            </logviewer>
        </models>
        <blocks>
            <logviewer>
                <class>Mycompany_Logviewer_Block</class>
            </logviewer>
        </blocks>
        <helpers>
            <logviewer>
                <class>Mycompany_Logviewer_Helper</class>
            </logviewer>
        </helpers>
    </global>

    <admin>
        <routers>
            <adminhtml>
                <args>
                    <modules>
                        <mycompany_logviewer after="Mage_Adminhtml">Mycompany_Logviewer_Adminhtml</mycompany_logviewer>
                    </modules>
                </args>
            </adminhtml>
        </routers>
    </admin>

    <adminhtml>
        <menu>
            <mycompany translate="title" module="mycompany_logviewer">
                <title>Mycompany</title>
                <sort_order>90</sort_order>
                <children>
                    <form translate="title" module="mycompany_logviewer">
                        <title>Form</title>
                        <sort_order>10</sort_order>
                        <action>adminhtml/logviewer</action>
                    </form>
                </children>
            </mycompany>
        </menu>

        <acl>
            <resources>
                <all>
                    <title>Allow Everything</title>
                </all>
                <admin>
                    <children>
                        <mycompany>
                            <title>Mycompany</title>
                            <sort_order>90</sort_order>
                            <children>
                                <form>
                                    <title>Form</title>
                                    <sort_order>10</sort_order>
                                </form>
                            </children>
                        </mycompany>
                    </children>
                </admin>
            </resources>
        </acl>
    </adminhtml>
</config>

Data.php(助手)

class Mycompany_Logviewer_Helper_Data extends Mage_Core_Helper_Abstract
{
}

LogviewerController.php(控制器)

class Mycompany_Logviewer_Adminhtml_LogviewerController extends Mage_Adminhtml_Controller_Action
{
    /**
    * View form action
    */
    public function indexAction() {
        $this->loadLayout();
        $this->_setActiveMenu('Mycompany/form');
        $this->_addBreadcrumb(Mage::helper('Mycompany_Logviewer')->__('Form'), Mage::helper('Mycompany_Logviewer')->__('Form'));
        $this->renderLayout();
    }

    /**
    * Check allow or not access to ths page
    *
    * @return bool - is allowed to access this menu
    */
    protected function _isAllowed()
    {
        return Mage::getSingleton('admin/session')->isAllowed('Mycompany/form');
    }
}

Mycompany_Logviewer.xml(配置文件)

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

以上所有内容都是从example I found online 复制的,我只是将命名空间和模块名称分别替换为MycompanyLogviewer。我很确定这很明显我忘记了,但我不知道它可能是什么。感谢您的帮助。

【问题讨论】:

    标签: magento admin


    【解决方案1】:

    跳出来的第一件事是您正在注册一个名称为Procedo_Logviewer的模块 - 实际上它应该是Mycompany_Logviewer

    所以,Mycompany_Logviewer.xml 应该如下:

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

    更改后清除缓存

    编辑

    更仔细地查看您的控制器,我还可以看到您正在这样调用您的助手:

    Mage::helper('Mycompany_Logviewer')
    

    你应该像这样调用你的助手:

    Mage::helper('logviewer')
    

    编辑 2

    您的 config.xml 中存在另一个问题

    module="mycompany_logviewer"
    

    应该是

    module="logviewer"
    

    这与您在 xml 中声明的辅助节点相关,即

    <helpers>
        <logviewer>
            <class>Mycompany_Logviewer_Helper</class>
        </logviewer>
    </helpers>
    

    【讨论】:

    • 谢谢德鲁。我更改了声明,但仍然遇到相同的错误。我正在更新问题以反映更改。
    • 关于缓存,都是禁用的,所以我不用每次改东西都清空。无论如何,谢谢你的提示。 :)
    • 谢谢德鲁。我尝试了你的建议,但它仍然不起作用。更清楚地说,一旦我登录到 Magento 管理面板,错误就会出现。在那个阶段我还没有调用控制器,因此其中的代码应该是无关紧要的。当我点击“登录”时,我得到了错误。
    • 我已经指出您的 config.xml 中还有其他问题
    • 啊哈!做到了!菜单部分是罪魁祸首。我将&lt;mycompany translate="title" module="mycompany_logviewer"&gt; 更改为&lt;mycompany translate="title" module="logviewer"&gt;,现在我可以登录并查看菜单条目。问题是,我复制的示例清楚地说明了&lt;turnkeye translate="title" module="turnkeye_adminform"&gt;,我只是替换了单词。我还检查了另一个示例,它给了我完全相同的错误,并且它的菜单部分相似:&lt;myexercise translate="title" module="myexercise_myform"&gt;。我可以理解如果其中一个错了,但两个都错了?
    【解决方案2】:

    我有类似的问题。解决方案是这样输入公司名称:

    <helpers>
        <Mycompany_Logviewer>
            <class>Mycompany_Logviewer_Helper</class>
        </Mycompany_Logviewer>
    </helpers>
    

    $myHelper= Mage::helper('Mycompany_Logviewer');
    

    【讨论】:

      猜你喜欢
      • 2012-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多