Magento: фатальная ошибка: класс «Mage_Giftcards_Helper_Data» не найден в… / app / Mage.php в строке 546


16

Я установил одно расширение модуля, которое выдает фатальную ошибку

«Неустранимая ошибка: класс« 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 должен объявить этот вспомогательный класс.

Но у меня есть оба в моем случае, что может быть причиной этой ошибки? Я также проверил этот модуль на моей новой установке magento,

Версия 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 Garg

4

Это происходит только при установке расширения с включенным компилятором. Вот что вам нужно сделать

1 шаг приложение / etc / module / ваш модуль, который вы установили недавно, отключите модуль

2 шага Авторизуйтесь в admin / system / tools compiler отключите компилятор Загрузите код снова, он будет работать нормально, затем вы можете снова скомпилировать код

удачи


1
  1. Убедитесь, что файл Data.php присутствует под вашим

codepool/extension_name/module_name/Helper/Data.php

  1. Если Data.php, присутствующий в вышеупомянутом каталоге, откроет этот файл и скопирует имя класса, в основном имя класса имеет смысл именования Magento, например

packagename_modulename_foldername (Помощник или Блок) _ имя файла (Data.php)

<?php

class package_module_Helper_Data{

}
  1. Перейдите в корневую папку magento и убедитесь, что файл package_module_Helper_Data.php присутствует в

includes/src/

  1. Если вы не видите, создайте php-файл с этим именем (который вы получили по ошибке) в каталоге src
  2. Скопируйте содержимое Data.php и вставьте его во вновь созданный файл, вот и все. Я уверен, что это поможет вам
  3. Тем не менее, если вы получаете ошибку или magento ничего не показывает о расширении, просто отключите режим компиляции в magento System-> Tools-> Compilation
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.