Magento: errore irreversibile: classe 'Mage_Giftcards_Helper_Data' non trovata in… / app / Mage.php sulla linea 546


16

Ho installato un'estensione del modulo che genera un errore fatale

"Errore irreversibile: classe 'Mage_Giftcards_Helper_Data' non trovata in .... / app / Mage.php sulla linea 546" in admin.

Ho consultato questo link /programming//a/9191286/2919940 e anche questo link /magento//a/7133/3693

Ma io ho

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

nel mio config.xmle ho questa classe

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

dichiarato al /app/code/local/Webtex/Giftcards/Helper/Data.phppercorso.

Ho disabilitato il compilatore e cancellato la cache rendendo vuota la var/cachedirectory.

Ho trovato ovunque che config.xmlavrebbe dovuto definire la classe helper e Data.php avrebbe dovuto dichiarare quella classe helper.

Ma ho entrambi nel mio caso, quale può essere la ragione di questo errore? Ho testato quel modulo anche sulla mia nuova installazione di Magento,

La versione di Magento è 1.7.0.2

Fornisci aiuto per questo errore ?? Se ci sono conflitti tra i nomi delle classi, come possiamo eseguire il debug?

Grazie


Fammi sapere se ci sono ulteriori informazioni di cui hai bisogno dalla mia risposta o se hai un aggiornamento.
Filwinkle,

Risposte:


20

Questo è comune quando si fa riferimento a un assistente mancante. In molti casi il nome della classe stessa non è corretto o il nome breve che lo fa riferimento è errato, motivo per cui Magento lo sta cercando nel percorso Mage_Giftcards_Helper_Data(vedere l'esempio 1 di seguito). Per i seguenti esempi ho creato un modulo chiamatoMyCompany_MyModule .

Questi sono solo alcuni dei molti modi in cui puoi sbagliare nel definire gli helper:


Alias ​​di classe helper errato:

Mi riferisco al mio aiutante come:

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

Ottengo l'errore:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

Cosa è andato storto?

Il mio alias di classe helper è definito come mymodule:

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

Cambiando il mio shortcode per ottenere Mage::helper('mymodule')il risultato desiderato.


Nome della classe non valido

Mi riferisco al mio aiutante (correttamente questa volta):

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

Ricevo:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

Cosa è andato storto?

Nella mia definizione di classe mancava "_Data":

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

Helper / Personalizzato:

Questo è simile a ciò che accade quando si tenta di fare riferimento a una classe di supporto all'interno di un file non denominato "Data.php".

Mi riferisco al mio aiutante come:

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

Il mio percorso helper del modulo è stato definito come:

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

Ho un file di classe in app / code / local / MyCompany / MyModule / Helper / Custom.php

Ottengo l'errore:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

Cosa è andato storto?

È necessario specificare altre classi di supporto in un modulo particolare come percorsi secondari al nome breve dell'helper del modulo. Questo è simile a come funzionano i blocchi e i modelli, ma al livello più alto non esiste una sottocartella.

Risolvo questo errore facendo riferimento al mio file di classe helper Custom.php come tale:

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

Controlla il seguente link potrebbe anche essere un problema di mancante helper stackoverflow.com/questions/19590164/…
Neeraj Garg,

4

Questo accade solo quando si installa l'estensione con il compilatore di abilitazione Ecco cosa devi fare

1 Step app / etc / module / your module che hai installato di recente disabilita module

2 Step Accedi al compilatore admin / system / tools disabilita il compilatore Carica nuovamente il codice funzionerà bene quindi puoi compilare di nuovo il tuo codice

in bocca al lupo


1
  1. Assicurati che il file Data.php sia presente sotto il tuo

codepool/extension_name/module_name/Helper/Data.php

  1. Se il Data.php presente nella suddetta directory apre quel file e copia il nome della classe, in pratica il nome della classe con il nome Magento ha il significato di

nomepacchetto_modulename_foldername (Helper o Block) _ nomefile (Data.php)

<?php

class package_module_Helper_Data{

}
  1. Passa alla cartella principale di Magento e assicurati che package_module_Helper_Data.php sia presente

includes/src/

  1. Se non vedi, crea un file php con quel nome (che hai ricevuto per errore) nella directory src
  2. Copia il contenuto di Data.php e incollalo nel file appena creato, tutto qui. Sono sicuro che ti aiuterà
  3. Tuttavia, se ricevi un errore o magento che non mostra nulla sull'estensione, disabilita la modalità di compilazione in magento Sistema-> Strumenti-> Compilazione
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.