Magento: Erro fatal: Classe 'Mage_Giftcards_Helper_Data' não encontrada em… / app / Mage.php na linha 546


16

Eu instalei uma extensão de módulo que gera um erro fatal

"Erro fatal: a classe 'Mage_Giftcards_Helper_Data' não foi encontrada em .... / app / Mage.php na linha 546" em admin.

Eu refferi este link /programming//a/9191286/2919940 e este link também /magento//a/7133/3693

Mas eu tenho

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

na minha config.xmle eu tenho essa aula

class Webtex_Giftcards_Helper_Data extends Mage_Core_Helper_Data{
// my methods
}

declarado no /app/code/local/Webtex/Giftcards/Helper/Data.phpcaminho.

Desabilitei o compilador e limpei o cache, criando o var/cachediretório vazio .

Eu encontrei em todo lugar que config.xmldeveria ter classe auxiliar definir e Data.php deveria declarar essa classe auxiliar.

Mas eu tenho os dois no meu caso, o que pode ser a razão desse erro? Também testei esse módulo na minha nova instalação do magento,

A versão Magento é 1.7.0.2

Por favor, forneça ajuda para este erro? Se houver conflitos de nomes de classes, como podemos depurar isso?

obrigado


Deixe-me saber se há alguma informação adicional necessária da minha resposta ou se você possui uma atualização.
philwinkle

Respostas:


20

Isso é comum ao fazer referência a um auxiliar ausente. Em muitos casos, o nome da classe em si está malformado ou seu nome abreviado está incorreto, e é por isso que o Magento a procura no caminho Mage_Giftcards_Helper_Data(veja o exemplo 1 abaixo). Para os exemplos a seguir, configurei um módulo chamado MyCompany_MyModule.

Estas são apenas algumas das muitas maneiras pelas quais você pode se dar mal ao definir ajudantes:


Alias ​​de classe auxiliar incorreto:

Refiro meu ajudante como:

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

Eu recebo o erro:

Fatal error: Class 'Mage_Mycompany_Helper_Data' not found

O que deu errado?

Meu alias da classe auxiliar é definido como mymodule:

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

Alterar meu código curto para Mage::helper('mymodule')produzir o resultado desejado.


Nome de classe malformado

Refiro o meu ajudante (corretamente desta vez):

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

Eu recebi:

Fatal error: Class 'MyCompany_MyModule_Helper_Data' not found

O que deu errado?

Minha definição de classe estava ausente "_Data":

class MyCompany_MyModule_Helper extends Mage_Core_Helper_Abstract
{


}

Auxiliar / Personalizado:

Isso é semelhante ao que acontece quando você tenta se referir a uma classe auxiliar em um arquivo não chamado "Data.php".

Refiro meu ajudante como:

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

O caminho do auxiliar do meu módulo foi definido como:

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

Eu tenho um arquivo de classe em app / code / local / MyCompany / MyModule / Helper / Custom.php

Eu recebo o erro:

Fatal error: Class 'Mage_Custom_Helper_Data' not found

O que deu errado?

Você precisa especificar outras classes auxiliares em um módulo específico como subcaminhos para o nome abreviado do auxiliar do módulo. É semelhante à maneira como os blocos e modelos funcionam - mas no nível superior não há subpasta.

Corrijo esse erro referenciando meu arquivo de classe auxiliar Custom.php da seguinte maneira:

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

Verifique seguinte ligação pode ser também um problema de falta de ajudante stackoverflow.com/questions/19590164/...
Neeraj Garg

4

Isso só acontece quando você instala a extensão com o compilador de ativação. Aqui está o que você deve fazer

1 etapa app / etc / module / seu módulo que você instalou recentemente desative o módulo

2 Etapa Faça o login no administrador / sistema / compilador de ferramentas desativar o compilador Faça o upload do código novamente, ele funcionará bem e você poderá compilar seu código novamente

boa sorte


1
  1. Verifique se o arquivo Data.php presente em seu

codepool/extension_name/module_name/Helper/Data.php

  1. Se o Data.php presente no diretório mencionado acima abrir esse arquivo e copiar o nome da classe, basicamente o nome da classe com o nome Magento será semelhante a

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

<?php

class package_module_Helper_Data{

}
  1. Vá para a pasta raiz do magento e verifique se o package_module_Helper_Data.php está presente em

includes/src/

  1. Se você não vê, crie um arquivo php com esse nome (que ocorreu com erro) no diretório src
  2. Copie o conteúdo do Data.php e cole-o no arquivo recém-criado. Tenho certeza que isso irá ajudá-lo
  3. Ainda assim, se você receber um erro ou um magento que não mostra nada sobre a extensão, desative o modo de compilação em magento Sistema-> Ferramentas-> Compilação
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.