Dados auxiliares não encontrados no magento

8

Eu escrevi uma nova extensão e tentando criar um arquivo de configuração no Magento Admin. Quando eu corro no navegador depois de limpar o cache, recebi o erro como abaixo

Fatal error: Class 'Mage_GlobalSms_Helper_Data' not found in D:\wamp\www\project\app\Mage.php on line 547

No arquivo de log de erro system.log, encontrei o erro abaixo:

2015-05-27T13:40:43+00:00 ERR (3): Warning: include(Mage\GlobalSms\Helper\Data.php): failed to open stream: No such file or directory  in D:\wamp\www\project\lib\Varien\Autoload.php on line 93
2015-05-27T13:40:43+00:00 ERR (3): Warning: include(): Failed opening 'Mage\GlobalSms\Helper\Data.php' for inclusion (include_path='D:\wamp\www\project\app\code\local;D:\wamp\www\project\app\code\community;D:\wamp\www\project\app\code\core;D:\wamp\www\project\lib;.;C:\php\pear')  in D:\wamp\www\project\lib\Varien\Autoload.php on line 93

Meu aplicativo \ etc \ modules \ file como abaixo:

<?xml version="1.0"?>
<config>
    <modules>
        <Php_GlobalSms>
            <active>true</active>
            <codePool>local</codePool>
            <version>0.0.1</version>
        </Php_GlobalSms>
    </modules>
</config>

Meu config.xml como abaixo:

<config>
<modules>
    <Ucs_GlobalSms>
        <version>0.0.1</version>
    </Ucs_GlobalSms>
</modules>
<admin>
     <routers>
        <adminhtml>
            <args>
                <modules>
                    <ucs_globalsms before="Mage_Adminhtml">Ucs_GlobalSms_Adminhtml</ucs_globalsms>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
<global>
    <helpers>
        <globalsms>
            <class>Ucs_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
    <models>
        <custommodule>
            <class>Ucs_GlobalSms_Model</class>
        </custommodule>
    </models>
    <events>
        <customer_register_success>
            <observers>
                <Ucs_GlobalSms_customer_register_success>
                    <type>singleton</type>
                    <class>Ucs_GlobalSms_Model_Observer</class>
                    <method>customerRegisterSuccess</method>
                </Ucs_GlobalSms_customer_register_success>
            </observers>
        </customer_register_success>
    </events>
</global>

My Helper / Data.php como abaixo:

<?php
class Php_GlobalSms_Helper_Data extends Mage_Core_Helper_Abstract {

}

Posso encontrar muitas postagens no SO dizendo que o Data.php está ausente, mas está tudo lá, ainda estou recebendo erro

Borboleta
fonte
3
Você limpou <webroot>/var/cache?
Pspahn 27/05

Respostas:

10

Sua declaração de ajudantes deve ficar assim:

<global>
    <helpers>
        <globalsms>
            <class>Php_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
</global>

e você deve chamar seu ajudante no código da seguinte maneira:

Mage::helper('globalsms');
Marius
fonte
Eu mudei nesse sentido, mas ainda não o seu trabalho
Borboleta
Você viu o erro do meu system.log?
Butterfly
11
Sim. Verifique se o seu módulo foi adquirido pelo Magento. Se for, então deve funcionar como eu descrevi. Talvez você deva acrescentar à pergunta a sua plenitude config.xmle a maneira como você está usando o ajudante
Marius
atualizado config.xml completo, não estou chamando o arquivo auxiliar em nenhum lugar. Se eu não declaro que estou recebendo erro, é por isso que eu adicionei a tag helper em xml
Borboleta
O erro exibido indica que o nome da classe do grupo não está sendo escolhido. Isso indica que o config.xml não está carregado ou a configuração do auxiliar está no lugar errado. Ele deve estar em / config / global / helpers, conforme observado na resposta de Marius. (observe também que a versão provavelmente não deve estar no arquivo XML do módulo).
Kevin Schroeder
5

O nome do seu módulo module.xmlé diferente em config.xml.

Não tenho certeza do que você deseja usar, Php_GlobalSmsou Ucs_GlobalSms?

Vernard Luz
fonte
4

Se você habilitar a compilação (Sistema> Ferramentas> Compilação), será necessário desabilitar ou compilar novamente. É melhor que você desative a Compilação ao desenvolver.

Magebuzz
fonte
2

Você precisa definir seu auxiliar no config.xml

<config>
<modules>
    <Php_GlobalSms>
        <version>0.0.1</version>
    </Php_GlobalSms>
</modules>
<admin>
     <routers>
        <adminhtml>
            <args>
                <modules>
                    <ucs_globalsms before="Mage_Adminhtml">Php_GlobalSms_Adminhtml</ucs_globalsms>
                </modules>
            </args>
        </adminhtml>
    </routers>
</admin>
<global>
    <models>
        <custommodule>
            <class>Php_GlobalSms_Model</class>
        </custommodule>
    </models>
    <helpers>
        <globalsms>
            <class>Php_GlobalSms_Helper</class>
        </globalsms>
    </helpers>
    <events>
        <customer_register_success>
            <observers>
                <Php_GlobalSms_customer_register_success>
                    <type>singleton</type>
                    <class>Php_GlobalSms_Model_Observer</class>
                    <method>customerRegisterSuccess</method>
                </Php_GlobalSms_customer_register_success>
            </observers>
        </customer_register_success>
    </events>
</global>
brianwalleshauser
fonte
1

Você disse que criou uma configuração para a área de administração; no arquivo system.xml, presumo que você tenha algo parecido com isto (você deveria ter):

<php_globalsms_options translate="label" module="php_globalsms">[...]

É aqui que o Magento tenta carregar seu ajudante: ele lida com a tradução, independentemente do fato de você chamá-lo em algum dos seus arquivos ou não. As outras respostas informam da maneira correta: atualize seu arquivo config.xml e informe ao Magento que o GlobalSms-helper reside em seu módulo.

simonthesorcerer
fonte
1

Eu tenho o mesmo problema. Eu tenho o meu config.xml e o meu layout xml:

  <layout>
        <updates>
            <module_name>
                <file>module_name.xml</file>
            </module_name>
        </updates>
    </layout>

Eu cometi um erro no module_name.xml. Eu removi o código que não é necessário.

alok
fonte