1

Magentoの管理者側にフォームを追加する拡張機能を開発しようとしていますが、何らかの理由で、モジュールのインストール時にMagentoAdministrationをロードすることさえできないようです。私は開発の初期段階にあり、StackOverflowで数回報告されているエラーで立ち往生しています。残念ながら、私の場合、どの答えも役に立たないようです。

私が得るエラーは*致命的なエラーです:クラス'Mage_Mycompany_Logviewer_Helper_Data'が546行目のC:\ XAMPP \ htdocs \ magento \ app\Mage.phpに見つかりません*。つまり、Magentoはヘルパークラスを見つけることができませんが、そこにあり、その名前は探しているものと一致します(最初の「Mage_」を除いて、他の拡張機能では使用していません)。

更新2012/07/29MagentoAdmin
にログインするとすぐにエラーが発生します。「ログイン」をクリックすると、エラーページだけが表示され、何も表示されません。

これが私がこれまでに持っているすべてのファイルの内容です。

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>

上記はすべて、オンラインで見つけた例からコピーしたものです。名前空間とモジュール名をそれぞれMycompanyLogviewerに置き換えました。それは私が忘れていた明らかなことだと確信していますが、それが何であるかを理解することはできません。助けてくれてありがとう。

4

2 に答える 2

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>
于 2012-07-29T16:36:24.193 に答える
2

私も同様の問題を抱えていました。解決策は、会社名を次のように入力することでした。

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

$myHelper= Mage::helper('Mycompany_Logviewer');
于 2014-09-02T11:19:54.903 に答える