Magento: Error fatal: la clase 'Mage_Giftcards_Helper_Data' no se encuentra en ... / app / Mage.php en la línea 546

16

He instalado una extensión de módulo que arroja un error fatal

"Error fatal: la clase 'Mage_Giftcards_Helper_Data' no se encuentra en .... / app / Mage.php en la línea 546" en admin.

He referido este enlace /programming//a/9191286/2919940 y también este enlace /magento//a/7133/3693

Pero tengo

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

en mi config.xmly tengo esta clase

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

declarado en el /app/code/local/Webtex/Giftcards/Helper/Data.phpcamino.

He deshabilitado el compilador y borrado el caché haciendo un var/cachedirectorio vacío .

Encontré en todas partes que config.xmldebería tener una clase auxiliar definida y Data.php debería haber declarado esa clase auxiliar.

Pero tengo ambos en mi caso, ¿cuál puede ser la razón de este error? También probé ese módulo en mi nueva instalación de magento,

La versión de Magento es 1.7.0.2

Por favor proporcione ayuda para este error? Si hay conflictos de nombres de clase, ¿cómo podemos depurar eso?

Gracias

Mukund Thanki
fuente
Avíseme si necesita alguna información adicional de mi respuesta o si tiene una actualización.
philwinkle

Respuestas:

20

Esto es común cuando se hace referencia a un ayudante perdido. En muchos casos, el nombre de la clase en sí está mal formado o su nombre abreviado que hace referencia a él es incorrecto, por lo que Magento lo está buscando en la ruta Mage_Giftcards_Helper_Data(consulte el ejemplo 1 a continuación). Para los siguientes ejemplos, he configurado un módulo llamado MyCompany_MyModule.

Estas son solo algunas de las muchas formas en que puede equivocarse con la definición de ayudantes:


Alias ​​de clase auxiliar incorrecto:

Me refiero a mi ayudante como:

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

Me sale el error:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

¿Qué salió mal?

Mi alias de clase auxiliar se define como mymodule:

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

Cambiar mi shortcode para Mage::helper('mymodule')producir el resultado deseado.


Nombre de clase mal formado

Me refiero a mi ayudante (esta vez correctamente):

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

Recibo:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

¿Qué salió mal?

Faltaba la definición de mi clase "_Data":

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

Ayudante / Personalizado:

Esto es similar a lo que sucede cuando intenta hacer referencia a una clase auxiliar dentro de un archivo que no se denomina "Data.php".

Me refiero a mi ayudante como:

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

La ruta auxiliar de mi módulo se definió como:

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

Tengo un archivo de clase en app / code / local / MyCompany / MyModule / Helper / Custom.php

Me sale el error:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

¿Qué salió mal?

Debe especificar otras clases auxiliares en un módulo en particular como subrutas al nombre corto de su módulo auxiliar. Esto es similar a cómo funcionan los bloques y modelos, pero en el nivel superior no hay subcarpeta.

Arreglo este error haciendo referencia a mi archivo de clase auxiliar Custom.php como tal:

$helper = Mage::helper('mymodule/custom');
philwinkle
fuente
Verifique el siguiente enlace, también podría ser un problema de falta de ayudante stackoverflow.com/questions/19590164/…
Neeraj Garg
4

Esto solo sucede cuando instala una extensión con el compilador de habilitación. Esto es lo que debe hacer

Aplicación de 1 paso / etc / module / su módulo que instaló recientemente deshabilitar módulo

2 pasos Inicie sesión en el compilador admin / system / tools deshabilite el compilador Cargue el código nuevamente, funcionará bien, luego puede compilar su código nuevamente

buena suerte

usuario3766719
fuente
1
  1. Asegúrese de que el archivo Data.php presente debajo de su

codepool/extension_name/module_name/Helper/Data.php

  1. Si el Data.php presente en el directorio mencionado anteriormente abre ese archivo y copia el nombre de la clase, básicamente el nombre de la clase que tiene el sentido de denominación de Magento como

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

<?php

class package_module_Helper_Data{

}
  1. Vaya a la carpeta raíz de magento y asegúrese de que package_module_Helper_Data.php esté presente en

includes/src/

  1. Si no lo ve, cree un archivo php con ese nombre (que obtuvo por error) en el directorio src
  2. Copie el contenido de Data.php y péguelo en el archivo recién creado, eso es todo. Estoy seguro de que te ayudará
  3. Aún así, si obtiene un error o Magento no muestra nada acerca de la extensión, simplemente deshabilite el modo de compilación en Magento Sistema-> Herramientas-> Compilación
Jegan
fuente