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.xml
i 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/cache
katalog.
Znalazłem wszędzie, gdzie config.xml
powinna 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
źródło
Odpowiedzi:
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 nazwieMyCompany_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:
Dostaję błąd:
Co poszło nie tak?
Mój alias klasy pomocniczej jest zdefiniowany jako
mymodule
:Zmiana mojego krótkiego kodu
Mage::helper('mymodule')
na pożądany wynik.Zniekształcona nazwa klasy
Odnoszę się do mojego pomocnika (tym razem poprawnie):
Otrzymałem:
Co poszło nie tak?
W mojej definicji klasy brakowało „_Data”:
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:
Moja ścieżka pomocnika modułu została zdefiniowana jako:
Mam plik klasy w app / code / local / MyCompany / MyModule / Helper / Custom.php
Dostaję błąd:
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:
źródło
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
źródło
codepool/extension_name/module_name/Helper/Data.php
includes/src/
źródło