Cette erreur a du en énerver plus d’un durant le développement Magento. Je vais vous lister ici une liste (non exhaustive) de solutions possibles pour corriger cette erreur.

Sachant qu’elle peut venir de plusieurs endroits, si vous trouvez d’autres causes de cette erreur, avec leur solution, n’hésitez pas à en faire part ici 😉

Voici donc quelques pistes qui peuvent vous aider :

Attention à la casse

Premièrement, vérifiez dans vos déclarations que la casse est correcte :

<helpers>
    <mymodule>
        <class>Mynamespace_Mymodule_Helper</class>
    </mymodule>
</helpers>

Alors que le nommage que vous avez fixé lors de la création de votre module est le suivant : MyNamespace/MyModule :

<helpers>
    <mymodule>
        <class>MyNamespace_MyModule_Helper</class>
    </mymodule>
</helpers>

Mauvais classe d’alias

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

Provoque l’erreur :

Fatal error: Class 'Mage_Mytest_Helper_Data' not found

Ce qui est défini dans le XML :

<helpers>
    <mymodule>
        <class>MyNamespace_MyModule_Helper</class>
    </mymodule>
</helpers>

C’est donc l’appel de l’helper qui est mal instancié, il faut l’appeler comme il est nommé dans le XML de config :

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

Mauvais nom de classe de l’Helper

Cette fois-ci mon appel à l’helper est correct :

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

Mais voici l’erreur qui s’affiche :

Fatal error: Class 'MyNamespace_MyModule_Helper_Data' not found

Vérifiez le nom de classe de votre Helper :

class MyNamespace_MyModule_Helper extends Mage_Core_Helper_Abstract

Ici il est incorrect, il faut ajouter le « Data »

class MyNamespace_MyModule_Helper_Data extends Mage_Core_Helper_Abstract

Sauf si vous appelez votre helper de la sorte : mymodule/myclass, ici le nom de classe est spécifié manuellement.

Helper Custom

Justement en parlant d’helper custom, regardons le cas qui suit :

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

Mon helper est defini dans le XML de la sorte :

<helpers>
    <mymodule>
        <class>MyNamespace_MyModule_Helper</class>
    </mymodule>
</helpers>

Ma classe est enregistrée dans app/code/local/MyNamespace/MyModule/Helper/Custom.php

Et voici l’erreur qui est générée :

Fatal error: Class 'Mage_Myclass_Helper_Data' not found

Pour faire face à cette erreur, vérifiez l’appel de votre helper. Il faut bien spécifier le nom de l’helper, PUIS la classe custom. Dans notre exemple cela donne :

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

Mauvais nommage du module pour les traductions

En voulant créer/modifier un rôle. J’ai eu l’erreur suivante :

Fatal error: Class 'Mage_MyNamespace_MyModule_Helper_Data' not found

Pourtant côté XML tout à l’air correct :

<helpers>
     <mymodule>
         <class>MyNamespace_MyModule_Helper</class>
     </mymodule>
</helpers>

Et ma classe également :

class MyNamespace_MyModule_Helper_Data extends Mage_Core_Helper_Abstract

Après avoir vérifié toutes les erreurs énoncées ci-dessus, mon code était correct. En fouillant un peu les message d’erreur, je me suis rendu compte qui c’était au niveau des ACL :

<acl>
	<resources>
		<admin>
			<children>
				<system>
					<children>
						<config>
							<children>
								<mymodule translate="title" module="MyNamespace_MyModule">
									<title>My Module</title>
								</mymodule>
							</children>
						</config>
					</children>
				</system>
			</children>
		</admin>
	</resources>
</acl>

La ligne suivante est la coupable : <ereservation translate= »title » module= »MyNamespace_MyModule »>, car mon helper est défini dans mon XML par <mymodule>

Il faut donc modifier le XML pour avoir :

<acl>
	<resources>
		<admin>
			<children>
				<system>
					<children>
						<config>
							<children>
								<mymodule translate="title" module="mymodule">
									<title>My Module</title>
								</mymodule>
							</children>
						</config>
					</children>
				</system>
			</children>
		</admin>
	</resources>
</acl>

D’autres propositions?

Si vous aussi avez été victime d’une erreur de ce genre, et que la solution n’est pas énumérée ici, n’hésitez pas à en faire part dans les commentaires 🙂

 

Fatal error: Class ‘MyNamespace_MyModule_Helper_Data’ not found in Mage.php
Taggé sur :            

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous utilisons des cookies afin de nous assurer de vous proposer la meilleure expérience sur ce site.
Ok