Hilfsdaten nicht in Magento gefunden

8

Ich habe eine neue Erweiterung geschrieben und versucht, eine Konfigurationseinstellungsdatei in Magento Admin zu erstellen. Wenn ich nach dem Löschen des Caches im Browser ausgeführt werde, wird der folgende Fehler angezeigt

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

In der Fehlerprotokolldatei system.log habe ich den folgenden Fehler gefunden:

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

Meine App \ etc \ modules \ file wie folgt:

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

Meine config.xml wie folgt:

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

Mein Helfer / Data.php wie folgt:

<?php
class Php_GlobalSms_Helper_Data extends Mage_Core_Helper_Abstract {

}

Ich kann viele Beiträge auf SO finden, die besagen, dass Data.php fehlt, aber alles ist da, trotzdem erhalte ich einen Fehler

Schmetterling
quelle
3
Hast du aufgeräumt <webroot>/var/cache?
pspahn

Antworten:

10

Ihre Helfererklärung sollte folgendermaßen aussehen:

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

und Sie sollten Ihren Helfer im Code wie folgt anrufen:

Mage::helper('globalsms');
Marius
quelle
Ich habe mich entsprechend geändert, aber es funktioniert immer noch nicht
Butterfly
Haben Sie meinen system.log-Fehler gesehen?
Schmetterling
1
Ja. Überprüfen Sie, ob Ihr Modul von Magento aufgenommen wurde. Wenn ja, sollte es wie beschrieben funktionieren. Vielleicht sollten Sie der Frage Ihre vollständige config.xmlund die Art und Weise, wie Sie den Helfer verwenden, hinzufügen
Marius
Die vollständige Datei config.xml wurde aktualisiert. Ich rufe nirgendwo eine Hilfsdatei auf. Wenn ich nicht erkläre, dass ich einen Fehler erhalte, habe ich deshalb das Hilfstag in xml
Butterfly
Der angezeigte Fehler zeigt an, dass der Name der Gruppenklasse nicht erfasst wird. Dies zeigt an, dass die Datei config.xml entweder nicht geladen ist oder sich die Konfiguration für den Helfer am falschen Ort befindet. Es sollte sich in / config / global / helpers befinden, wie in Marius 'Antwort angegeben. (Beachten Sie auch, dass die Version wahrscheinlich nicht in der XML-Datei des Moduls enthalten sein sollte.)
Kevin Schroeder
5

Ihr Modulname in module.xmlunterscheidet sich in config.xml.

Ich bin mir nicht sicher, was Sie verwenden möchten, Php_GlobalSmsoder Ucs_GlobalSms?

Vernard Luz
quelle
4

Wenn Sie die Kompilierung aktivieren (System> Extras> Kompilierung), müssen Sie sie deaktivieren oder neu kompilieren. Es ist am besten, wenn Sie die Kompilierung deaktivieren, wenn Sie die Entwicklung durchführen.

Magebuzz
quelle
2

Sie müssen Ihren Helfer in der Datei config.xml definieren

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

Sie haben gesagt, dass Sie eine Konfigurationseinstellung für den Administratorbereich erstellt haben. In der system.xml-Datei gehe ich davon aus, dass Sie so etwas haben (sollten Sie haben):

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

Hier versucht Magento, Ihren Helfer zu laden: Es übernimmt die Übersetzung, unabhängig davon, ob Sie den Helfer in einer Ihrer Dateien aufrufen oder nicht. Die anderen Antworten zeigen den richtigen Weg: Aktualisieren Sie Ihre Datei config.xml und teilen Sie Magento mit, dass sich der GlobalSms-Helfer in Ihrem Modul befindet.

simonthesorcerer
quelle
1

Ich habe das gleiche Problem. Ich habe meine config.xml und mein Layout xml überprüft:

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

Ich habe einen Fehler in module_name.xml gemacht. Ich habe den Code entfernt, der nicht benötigt wird.

alok
quelle