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>

У мене є файл класу в додатку / код / ​​локальний / 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

Це трапляється лише при встановленні розширення з компілятором enable Ось що вам потрібно зробити

1 Крок додаток / etc / module / ваш модуль, який ви нещодавно встановили, відключіть модуль

2 Крок Увійти до адміністратора / компілятора систем / інструментів відключити компілятор Завантажте код знову, він буде добре працювати, тоді ви можете знову скомпілювати свій код

Щасти


1
  1. Переконайтеся, що файл Data.php присутній під вашим

codepool/extension_name/module_name/Helper/Data.php

  1. Якщо Data.php, присутній у вищезгаданому каталозі, відкриє цей файл і скопіює ім'я класу, в основному ім'я класу, що має назву Magento, як

packagename_modulename_foldername (Helper or Block) _ ім'я файлу (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 System-> Tools-> Compilation
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.