Dati helper non trovati in magento


8

Ho scritto una nuova estensione e ho cercato di creare un file delle impostazioni di configurazione in Magento Admin. Quando corro sul browser dopo aver svuotato la cache ho ricevuto l'errore come di seguito

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

Nel file di registro degli errori system.log ho trovato l'errore di seguito:

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

La mia app \ etc \ modules \ come di seguito:

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

Il mio config.xml come di seguito:

<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 come di seguito:

<?php
class Php_GlobalSms_Helper_Data extends Mage_Core_Helper_Abstract {

}

Riesco a trovare molti post su SO che dicono che Data.php manca, ma è tutto lì, sto ancora ricevendo un errore


3
Hai ripulito <webroot>/var/cache?
pspahn,

Risposte:


10

La dichiarazione dei tuoi aiutanti dovrebbe apparire così:

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

e dovresti chiamare il tuo aiutante nel codice in questo modo:

Mage::helper('globalsms');

Ho cambiato di conseguenza, ma continua a non funzionare
Butterfly,

Hai visto il mio errore system.log?
Butterfly,

1
Sì. Controlla se il tuo modulo viene ritirato da Magento. Se lo è, allora dovrebbe funzionare come ho descritto. Forse dovresti aggiungere alla domanda il tuo pieno config.xmle il modo in cui stai usando l'helper
Marius

aggiornato config.xml completo, non sto chiamando file helper da nessuna parte. Se non dichiaro di ricevere errori, ecco perché ho aggiunto il tag helper in xml
Butterfly,

L'errore visualizzato indica che il nome della classe di gruppo non è stato raccolto. Ciò indica che config.xml non è caricato o che la configurazione per l'helper è nella posizione sbagliata. Dovrebbe essere in / config / global / helpers come indicato nella risposta di Marius. (nota anche che probabilmente la versione non dovrebbe essere nel file XML del modulo).
Kevin Schroeder,

5

Il nome del tuo modulo in module.xmlè diverso in config.xml.

Non sono sicuro di me stesso cosa vuoi usare Php_GlobalSmso Ucs_GlobalSms?


4

Se si abilita la compilazione (Sistema> Strumenti> Compilazione), è necessario disabilitarla o ricompilarla. È la cosa migliore che disabiliti la compilazione quando fai lo sviluppo.


2

Devi definire il tuo aiuto in 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>

1

Hai detto di aver creato un'impostazione di configurazione per l'area di amministrazione; nel file system.xml, suppongo che tu abbia qualcosa del genere (dovresti avere):

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

È qui che Magento cerca di caricare il tuo aiutante: gestisce la traduzione, indipendentemente dal fatto che tu chiami l'helper in uno dei tuoi file o meno. Le altre risposte indicano il modo corretto: aggiorna il tuo file config.xml e comunica a Magento che l'helper GlobalSms risiede nel tuo modulo.


1

Ho lo stesso problema. Ho controllato il mio config.xml e controllare il mio layout xml:

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

Ho fatto un errore in nome_modulo.xml. Ho rimosso quel codice che non è necessario.

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.