Magento:致命的エラー:クラス 'Mage_Giftcards_Helper_Data'が546行目の…/ app / Mage.phpに見つかりません


16

致命的なエラーをスローするモジュール拡張機能を1つインストールしました

「致命的なエラー:クラス 'Mage_Giftcards_Helper_Data'が.... / app / Mage.phpの546行目で見つかりません」管理者

このリンク/programming//a/9191286/2919940とこのリンクを/magento//a/7133/3693で参照しています

しかし、私は持っています

<global>
<helpers>
        <giftcards>
            <class>Webtex_Giftcards_Helper</class>
        </giftcards>
    </helpers>
</global>

config.xmlと私はこのクラスを持っています

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

/app/code/local/Webtex/Giftcards/Helper/Data.phpパスで宣言されています。

コンパイラを無効にし、空のvar/cacheディレクトリを作成してキャッシュをクリアしました。

config.xmlヘルパークラスを定義し、Data.phpがそのヘルパークラスを宣言する必要がある場所を見つけました。

しかし、私はそれらの両方を私の場合に持っています、このエラーの理由は何ですか?私は新しいentoのインストールでもそのモジュールをテストしましたが、

Magentoのバージョンは1.7.0.2です

このエラーのヘルプを提供してください?? クラス名の競合がある場合、どのようにデバッグできますか?

ありがとう


私の回答から追加情報が必要な場合、または更新がある場合はお知らせください。
philwinkle

回答:


20

これは、見つからないヘルパーを参照する場合に一般的です。多くの場合、クラス名自体の形式が正しくないか、クラス名を参照する短縮名が正しくないため、Magentoはパスでクラス名を探していますMage_Giftcards_Helper_Data(以下の例1を参照)。次の例では、というモジュールを設定しましたMyCompany_MyModule

これらは、ヘルパーを定義するのに苦労する多くの方法のほんの一部です。


間違ったヘルパークラスエイリアス:

ヘルパーを次のように参照します。

$helper = Mage::helper('mycompany');

エラーが表示されます:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

何が悪かったのか?

私のヘルパークラスのエイリアスは次のように定義されていmymoduleます:

<helpers>
    <mymodule>
        <class>MyCompany_MyModule_Helper</class>
    </mymodule>
</helpers>

ショートコードを変更してMage::helper('mymodule')、目的の結果を生成しました。


不正なクラス名

ヘルパーを参照します(今回は正しく):

$helper = Mage::helper('mymodule');

私は受け取ります:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

何が悪かったのか?

クラス定義に「_Data」がありませんでした:

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

ヘルパー/カスタム:

これは、「Data.php」という名前のないファイル内でヘルパークラスを参照しようとすると発生する現象に似ています。

ヘルパーを次のように参照します。

$helper = Mage::helper('custom');

私のモジュールヘルパーパスは次のように定義されました。

<helpers>
    <mymodule>
        <class>MyCompany_MyModule_Helper</class>
    </mymodule>
</helpers>

app / code / local / MyCompany / MyModule / Helper / Custom.phpにクラスファイルがあります

エラーが表示されます:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

何が悪かったのか?

特定のモジュールの他のヘルパークラスを、モジュールヘルパーのショートネームへのサブパスとして指定する必要があります。これは、ブロックとモデルの動作に似ていますが、最上位レベルにはサブフォルダーがありません。

Custom.phpヘルパークラスファイルを次のように参照することで、このエラーを修正します。

$helper = Mage::helper('mymodule/custom');

それはまた、不足しているヘルパーの問題がある可能性があります次のリンクをチェック stackoverflow.com/questions/19590164/...
Neerajガーグ

4

これは、コンパイラーを有効にして拡張機能をインストールした場合にのみ発生します。

1ステップインストールしたapp / etc / module / your moduleは、モジュールを無効にします

2ステップadmin / system / toolsコンパイラーにログインし、コンパイラーを無効にしますコンパイラーを再度アップロードします

幸運を


1
  1. Data.phpファイルが以下の下にあることを確認してください

codepool/extension_name/module_name/Helper/Data.php

  1. 上記のディレクトリにあるData.phpがそのファイルを開いてクラス名をコピーする場合、基本的には、Magentoのような名前付けの意味を持つクラス名

packagename_modulename_foldername(ヘルパーまたはブロック)_ filename(Data.php)

<?php

class package_module_Helper_Data{

}
  1. magentoのルートフォルダーに移動し、package_module_Helper_Data.php

includes/src/

  1. 表示されない場合は、srcディレクトリの下にその名前(誤って取得した)でphpファイルを作成します
  2. Data.phpの内容をコピーして、新しく作成したファイルに貼り付けます。私はそれがあなたを助けると確信しています
  3. それでもエラーまたは拡張機能について何も表示されないmagentoが表示される場合は、magento System-> Tools-> Compilationでコンパイルモードを無効にしてください。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.