Magento: Фатальная ошибка: Класс "Вспомогательные данные подарочных карт мага" не найден в.../app/Mage.php на линии 546
Я установил одно расширение модуля, которое выдает фатальную ошибку
"Фатальная ошибка: класс 'mage_giftcards_helper_data' не найден в..../app/Mage.php в строке 546"в администраторе.
Я переадресовал эту ссылку https://stackoverflow.com/a/9191286/2919940 и эта ссылка также https://magento.stackexchange.com/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
Пожалуйста, помогите устранить эту ошибку?? Если есть классовые конфликты имена как мы можем это отладить??
Спасибо
3 answers
Это часто встречается при ссылке на отсутствующего помощника. Во многих случаях само имя класса искажено или ваше краткое имя, ссылающееся на него, неверно, поэтому 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
Что пошло не так?
Мое определение класса отсутствовало "_данные":
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');
Это происходит только при установке расширения с включенным компилятором Вот что вам нужно сделать
1 Шаг приложение/etc/модуль/ваш модуль, который вы недавно установили, отключите модуль
2 Шаг Войдите в систему администратора/система/инструменты, чтобы отключить компилятор, снова загрузите код, он будет работать нормально, затем вы сможете снова скомпилировать свой код
Удачи
- Убедитесь, что Data.php файл, присутствующий под вашим
codepool/extension_name/module_name/Helper/Data.php
- Если Data.php присутствующий в вышеупомянутом каталоге откройте этот файл и скопируйте имя класса, в основном имя класса, имеющее смысл именования Magento, например
Имя_модуля Имя_папки пакета (Помощник или блок) _ имя файла(Data.php)
<?php
class package_module_Helper_Data{
}
- Перейдите в корневую папку magento и убедитесь, что package_module_Helper_Data.php присутствует в
includes/src/
- Если вы не видите, создайте php-файл с этим именем (которое вы получили по ошибке) в каталоге src
- Копировать содержимое Data.php и вставьте его во вновь созданный файл, вот и все. Я уверен, что это поможет вам
- Тем не менее, если вы получаете ошибку или magento ничего не показывает о расширении, просто отключите режим компиляции в разделе Система magento->Инструменты->Компиляция