Błąd (fatal error) z Magento Helper – Helper Class Not Found oraz prefiks (prefix) Mage_

Podczas tworzenia modułów na Magento, a szczególnie przy pisaniu konfiguracji korzystającej z wbudowanych mechanizmów Magneto możemy się natknąć na błąd podobny to poniższego.

Fatal error: Class ‘Mage_MyModule_Helper_Data’ not found in

Od razu rzuca się w oczy, że w nazwie klasy zamiast nazwy naszej firmy (namespace) widnieje nazwa Mage. Oznacza to, że Magento nie wie, że mamy napisanego Helpera dla naszego modułu (gdyż nie poinformowaliśmy go o tym) i poszukuje odpowiedniego Helpera we własnej przestrzeni nazw. Taki błąd najprawdopodobniej będzie wygenerowany, gdy piszecie konfigurację dla swojego modułu. Wtedy w pliku system.xml umieścicie coś podobnego do tego:

1
2
3
4
5
6
7
8
<config>
    <tabs>
        <mymodule module="mymodule">
            <label>MyModule</label>
            <sort_order>99999</sort_order>
        </mymodule>
    </tabs> 
</config>

Atrybut module informuje Magento, gdzie ma szukać Helpera, który jest potrzebny Magento, aby umieścić nasze menu w konfiguracji Magento. A gdzie ma szukać? Ano szuka identycznego wpisu w pliku config.xml.

1
2
3
4
5
6
7
<global>
	<helpers>
		<mymodule>
			<class>MyCompany_MyModule_Helper</class>
		</mymodule>
	</helpers>
</global>

I chodzi o to, żeby tamto mymodule było identyczne z tym mymodule inaczej Magento nie będzie wiedział, że mamy własnego Helpera w module.