找不到助手类

时间:2012-07-29 16:17:42

标签: magento admin

我正在尝试开发一个扩展,在Magento的Admin端添加一个表单,但由于某些原因,我似乎无法在安装我的模块时加载Magento Administration。我正处于开发的最初阶段,而且我遇到了一个在StackOverflow上多次报告的错误。不幸的是,在我的案例中,没有一个答案似乎有所帮助。

我得到的错误是*致命错误:在第546行的C:\ XAMPP \ htdocs \ magento \ app \ Mage.php中找不到类'Mage_Mycompany_Logviewer_Helper_Data'。这应该意味着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复制的,我只是分别用 Mycompany Logviewer 替换了命名空间和模块名称。我很确定这是我忘记的明显的东西,但我无法弄清楚它可能是什么。谢谢你的帮助。

2 个答案:

答案 0 :(得分:4)

跳出来的第一件事是你正在注册一个名为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>

答案 1 :(得分:2)

我有类似的问题。解决方案是将公司名称改为:

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

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