Magento: Błąd krytyczny: nie znaleziono klasy „Mage_Giftcards_Helper_Data” w… / app / Mage.php w linii 546

16

Zainstalowałem jedno rozszerzenie modułu, które generuje błąd krytyczny

„Błąd krytyczny: nie znaleziono klasy„ Mage_Giftcards_Helper_Data ”w .... / app / Mage.php w linii 546” w admin.

Odniosłem się do tego linku /programming//a/9191286/2919940 oraz tego linku, a także /magento//a/7133/3693

Ale mam

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

w mojej config.xmli mam tę klasę

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

zadeklarowane na /app/code/local/Webtex/Giftcards/Helper/Data.phpścieżce.

Wyłączyłem kompilator i wyczyściłem pamięć podręczną, tworząc pusty var/cachekatalog.

Znalazłem wszędzie, gdzie config.xmlpowinna być zdefiniowana klasa pomocnicza, a Data.php powinna była zadeklarować tę klasę pomocniczą.

Ale mam oba w moim przypadku, co może być przyczyną tego błędu? Testowałem również ten moduł na mojej nowej instalacji Magento,

Wersja Magento to 1.7.0.2

Proszę podać pomoc dotyczącą tego błędu? Jeśli występują konflikty nazw klas, jak możemy to debugować?

Dzięki

Mukund Thanki
źródło
Daj mi znać, jeśli z mojej odpowiedzi będą potrzebne dodatkowe informacje lub jeśli masz aktualizację.
philwinkle

Odpowiedzi:

20

Jest to powszechne w przypadku odniesienia do zaginionego pomocnika. W wielu przypadkach sama nazwa klasy jest zniekształcona lub twoja krótka nazwa, która się do niej odwołuje, jest niepoprawna, dlatego Magento szuka jej na ścieżce Mage_Giftcards_Helper_Data(patrz przykład 1 poniżej). Dla poniższych przykładów skonfigurowałem moduł o nazwie MyCompany_MyModule.

To tylko kilka z wielu sposobów, w jakie możesz się nie udać, definiując pomocników:


Niepoprawny alias klasy pomocnika:

Odnoszę się do mojego pomocnika jako:

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

Dostaję błąd:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

Co poszło nie tak?

Mój alias klasy pomocniczej jest zdefiniowany jako mymodule:

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

Zmiana mojego krótkiego kodu Mage::helper('mymodule')na pożądany wynik.


Zniekształcona nazwa klasy

Odnoszę się do mojego pomocnika (tym razem poprawnie):

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

Otrzymałem:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

Co poszło nie tak?

W mojej definicji klasy brakowało „_Data”:

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

Pomocnik / niestandardowy:

Jest to podobne do tego, co dzieje się, gdy próbujesz odwołać się do klasy pomocnika w pliku o nazwie „Data.php”.

Odnoszę się do mojego pomocnika jako:

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

Moja ścieżka pomocnika modułu została zdefiniowana jako:

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

Mam plik klasy w app / code / local / MyCompany / MyModule / Helper / Custom.php

Dostaję błąd:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

Co poszło nie tak?

Musisz określić inne klasy pomocników w danym module jako ścieżki podrzędne do skróconej nazwy pomocnika modułu. Jest to podobne do działania bloków i modeli - ale na najwyższym poziomie nie ma podfolderu.

Naprawiam ten błąd, odwołując się do mojego pliku klasy pomocnika Custom.php jako takiego:

$helper = Mage::helper('mymodule/custom');
philwinkle
źródło
Sprawdź Poniższy link może być również problemem braku pomocnika stackoverflow.com/questions/19590164/...
Neeraj Garg
4

Dzieje się tak tylko wtedy, gdy instalujesz rozszerzenie z włączonym kompilatorem. Oto, co musisz zrobić

1 Krok aplikacja / etc / module / your module, którą niedawno zainstalowałeś, wyłącz moduł

2 Krok Zaloguj się do kompilatora admin / system / tools wyłącz kompilator Prześlij kod ponownie będzie działał dobrze, a następnie będziesz mógł ponownie skompilować kod

powodzenia

użytkownik3766719
źródło
1
  1. Upewnij się, że plik Data.php znajduje się pod Twoim

codepool/extension_name/module_name/Helper/Data.php

  1. Jeśli Data.php obecny w wyżej wspomnianym katalogu otworzy ten plik i skopiuje nazwę klasy, Zasadniczo nazwa klasy ma nazywanie Magento jak

nazwa_pakietu_modul_nazwa_folderu (Pomocnik lub Blok) _ nazwa_pliku (Data.php)

<?php

class package_module_Helper_Data{

}
  1. Przejdź do folderu głównego magento i upewnij się, że pakiet_module_Helper_Data.php znajduje się w

includes/src/

  1. Jeśli nie widzisz, utwórz plik php o tej nazwie (co popełniłeś błąd) w katalogu src
  2. Skopiuj zawartość pliku Data.php i wklej go do nowo utworzonego pliku. Jestem pewien, że ci to pomoże
  3. Nadal jeśli pojawi się błąd lub Magento nie pokazuje nic o rozszerzeniu, po prostu wyłącz tryb kompilacji w Magento System-> Narzędzia-> Kompilacja
Jegan
źródło