Magento: erreur fatale: classe 'Mage_Giftcards_Helper_Data' introuvable dans… / app / Mage.php sur la ligne 546

16

J'ai installé une extension de module qui génère une erreur fatale

"Erreur fatale: classe 'Mage_Giftcards_Helper_Data' introuvable dans .... / app / Mage.php sur la ligne 546" dans admin.

J'ai référencé ce lien /programming//a/9191286/2919940 et ce lien également /magento//a/7133/3693

Mais j'ai

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

dans mon config.xmlet j'ai cette classe

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

déclaré au /app/code/local/Webtex/Giftcards/Helper/Data.phpchemin.

J'ai désactivé le compilateur et effacé le cache en créant un var/cacherépertoire vide .

J'ai trouvé partout où la config.xmlclasse d'assistance devrait être définie et Data.php devrait avoir déclaré cette classe d'assistance.

Mais j'ai les deux dans mon cas, quelle peut être la raison de cette erreur? J'ai également testé ce module sur ma nouvelle installation de magento,

La version de Magento est 1.7.0.2

Veuillez fournir de l'aide pour cette erreur ?? S'il y a des conflits de noms de classe, comment pouvons-nous déboguer cela ??

Merci

Mukund Thanki
la source
Faites-moi savoir s'il y a des informations supplémentaires dont vous avez besoin dans ma réponse ou si vous avez une mise à jour.
philwinkle

Réponses:

20

Ceci est courant lors du référencement d'un assistant manquant. Dans de nombreux cas, le nom de la classe lui-même est mal formé ou votre nom abrégé le référençant est incorrect, c'est pourquoi Magento le recherche dans le chemin Mage_Giftcards_Helper_Data(voir l'exemple 1 ci-dessous). Pour les exemples suivants, j'ai mis en place un module appelé MyCompany_MyModule.

Ce ne sont que quelques-unes des nombreuses façons dont vous pouvez aller de travers avec la définition des assistants:


Alias ​​de classe d'assistance incorrect:

Je fais référence à mon aide comme:

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

Je reçois l'erreur:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

Qu'est ce qui ne s'est pas bien passé?

Mon alias de classe d'assistance est défini comme suit mymodule:

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

Changer mon shortcode pour Mage::helper('mymodule')produire le résultat souhaité.


Nom de classe mal formé

Je référence mon aide (correctement cette fois):

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

Je reçois:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

Qu'est ce qui ne s'est pas bien passé?

Ma définition de classe manquait "_Data":

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

Aide / Personnalisé:

Cela est similaire à ce qui se produit lorsque vous essayez de faire référence à une classe d'assistance dans un fichier non nommé "Data.php".

Je fais référence à mon aide comme:

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

Mon chemin d'assistance de module a été défini comme:

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

J'ai un fichier de classe dans app / code / local / MyCompany / MyModule / Helper / Custom.php

Je reçois l'erreur:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

Qu'est ce qui ne s'est pas bien passé?

Vous devez spécifier d'autres classes d'assistance dans un module particulier comme sous-chemins vers le nom abrégé de votre module d'assistance. Ceci est similaire au fonctionnement des blocs et des modèles - mais au niveau le plus élevé, il n'y a pas de sous-dossier.

Je corrige cette erreur en référençant mon fichier de classe d'assistance Custom.php en tant que tel:

$helper = Mage::helper('mymodule/custom');
philwinkle
la source
Vérifier le lien suivant, il peut également être un problème d'absence de stackoverflow.com/questions/19590164/…
Neeraj Garg
4

Cela ne se produit que lorsque vous installez l'extension avec le compilateur d'activation Voici ce que vous devez faire

1 étape app / etc / module / votre module que vous avez installé récemment désactiver le module

2 étapes Connectez-vous au compilateur admin / system / tools désactiver le compilateur Téléchargez de nouveau le code, cela fonctionnera bien, vous pourrez ensuite recompiler votre code

bonne chance

user3766719
la source
1
  1. Assurez-vous que le fichier Data.php présent sous votre

codepool/extension_name/module_name/Helper/Data.php

  1. Si le Data.php présent dans le répertoire mentionné ci-dessus ouvre ce fichier et copie le nom de classe, Fondamentalement, le nom de classe ayant le sens de dénomination Magento comme

packagename_modulename_foldername (Helper ou Block) _ filename (Data.php)

<?php

class package_module_Helper_Data{

}
  1. Accédez au dossier racine magento et assurez-vous que le package_module_Helper_Data.php présent dans

includes/src/

  1. Si vous ne voyez pas, créez un fichier php avec ce nom (que vous avez obtenu par erreur) sous le répertoire src
  2. Copiez le contenu de Data.php et collez-le dans le fichier nouvellement créé, c'est tout. Je suis sûr que cela vous aidera
  3. Pourtant, si vous obtenez une erreur ou que magento ne montre rien sur l'extension, désactivez simplement le mode de compilation sous magento System-> Tools-> Compilation
Jegan
la source