Données d'assistance non trouvées dans magento

8

J'ai écrit une nouvelle extension et j'essaie de créer un fichier de paramètres de configuration dans Magento Admin. Lorsque je lance sur le navigateur après avoir effacé le cache, je reçois l'erreur comme ci-dessous

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

Dans le fichier journal des erreurs system.log, j'ai trouvé l'erreur ci-dessous:

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

Mon fichier app \ etc \ modules \ comme ci-dessous:

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

Mon config.xml comme ci-dessous:

<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>

Mon Helper / Data.php comme ci-dessous:

<?php
class Php_GlobalSms_Helper_Data extends Mage_Core_Helper_Abstract {

}

Je peux trouver beaucoup de messages sur SO disant que Data.php est manquant, mais tout est là, je reçois toujours une erreur

Papillon
la source
3
Avez-vous nettoyé <webroot>/var/cache?
pspahn

Réponses:

10

Votre déclaration d'aide devrait ressembler à ceci:

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

et vous devez appeler votre assistant dans le code comme ceci:

Mage::helper('globalsms');
Marius
la source
J'ai changé en conséquence, mais cela ne fonctionne toujours pas
Butterfly
Avez-vous vu mon erreur system.log?
Butterfly
1
Oui. Vérifiez si votre module est récupéré par Magento. Si c'est le cas, cela devrait fonctionner comme je l'ai décrit. Peut-être que vous devriez ajouter à la question votre pleine config.xmlet la façon dont vous utilisez l'aide
Marius
mis à jour le fichier config.xml complet, je n'appelle aucun fichier d'aide nulle part. Si je ne déclare pas que j'obtiens une erreur, c'est pourquoi j'ai ajouté la balise helper en xml
Butterfly
L'erreur affichée indique que le nom de classe de groupe n'est pas récupéré. Cela indique que le fichier config.xml n'est pas chargé ou que la configuration de l'assistant est au mauvais endroit. Il devrait être dans / config / global / helpers comme indiqué dans la réponse de Marius. (notez également que la version ne devrait probablement pas se trouver dans le fichier XML du module).
Kevin Schroeder
5

Le nom de votre module dans module.xmlest différent dans config.xml.

Je ne sais pas moi-même ce que tu veux utiliser, Php_GlobalSmsou Ucs_GlobalSms?

Vernard Luz
la source
4

Si vous activez la compilation (Système> Outils> Compilation), vous devez la désactiver ou la recompiler. Il est préférable de désactiver la compilation lors du développement.

Magebuzz
la source
2

Vous devez définir votre assistant dans le fichier 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
la source
1

Vous avez dit que vous avez créé un paramètre de configuration pour la zone d'administration; dans le fichier system.xml, je suppose que vous avez quelque chose comme ça (vous devriez avoir):

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

C'est là que Magento essaie de charger votre assistant: il gère la traduction, indépendamment du fait que vous l'appeliez dans l'un de vos fichiers ou non. Les autres réponses indiquent la bonne façon: mettez à jour votre fichier config.xml et dites à Magento que l'assistant GlobalSms réside dans votre module.

simonthesorcerer
la source
1

J'ai le même problème. J'ai vérifier mon config.xml et vérifier mon layout xml:

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

J'ai fait une erreur dans nom_module.xml. J'ai supprimé ce code qui n'est pas nécessaire.

alok
la source