Данные помощника не найдены в magento

8

Я написал новое расширение и пытаюсь создать файл настроек конфигурации в Magento Admin. Когда я запускаю браузер после очистки кеша, я получаю сообщение об ошибке, как показано ниже

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

В файле журнала ошибок system.log я нашел ошибку ниже:

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

Мое приложение \ etc \ modules \ file, как показано ниже:

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

Мой config.xml как ниже:

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

Мой Помощник / Data.php как показано ниже:

<?php
class Php_GlobalSms_Helper_Data extends Mage_Core_Helper_Abstract {

}

Я могу найти много сообщений на SO о том, что Data.php отсутствует, но все есть, но я получаю ошибку

бабочка
источник
3
Вы вычистили <webroot>/var/cache?
pspahn

Ответы:

10

Ваша декларация помощников должна выглядеть так:

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

и вы должны вызвать своего помощника в коде так:

Mage::helper('globalsms');
Мариус
источник
Я изменился соответственно, но все еще не работает
Butterfly
Вы видели мою ошибку system.log?
Бабочка
1
Да. Проверьте, поднят ли ваш модуль Magento. Если это так, то это должно работать, как я описал. Может быть, вам следует добавить к этому вопросу полную информацию о config.xmlтом, как вы используете помощника
Мариус
обновлен полный config.xml, я нигде не вызываю вспомогательный файл. Если я не заявляю, что получаю ошибку, вот почему я добавил вспомогательный тег в xml
Butterfly
Отображаемая ошибка указывает на то, что имя класса группы не выбирается. Это указывает на то, что config.xml либо не загружен, либо конфигурация для помощника находится не в том месте. Это должно быть в / config / global / helpers, как отмечено в ответе Мариуса. (также обратите внимание, что версия, вероятно, не должна быть в файле модуля XML).
Кевин Шредер
5

Ваше имя модуля в module.xmlотличается от config.xml.

Я сам не уверен, что ты хочешь использовать, Php_GlobalSmsили Ucs_GlobalSms?

Вернард Луз
источник
4

Если вы включили компиляцию (Система> Инструменты> Компиляция), вам необходимо отключить или перекомпилировать ее. Лучше всего отключить компиляцию при разработке.

Magebuzz
источник
2

Вы должны определить свой помощник в 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
источник
1

Вы сказали, что создали параметр конфигурации для области администратора; в system.xml-файле я предполагаю, что у вас есть что-то вроде этого (вы должны иметь):

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

Здесь Magento пытается загрузить ваш помощник: он обрабатывает перевод, независимо от того, вызываете ли вы помощника в каком-либо из ваших файлов или нет. Другие ответы показывают правильный путь: обновите файл config.xml и скажите Magento, что помощник GlobalSms находится в вашем модуле.

simonthesorcerer
источник
1

У меня такая же проблема. Я проверил мой config.xml и проверил мой макет xml:

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

Я сделал ошибку в module_name.xml. Я удалил тот код, который не нужен.

Alok
источник