Magento-модуль переименован, но Magento продолжает просить старый класс помощника - PullRequest
4 голосов
/ 23 июня 2011

Magento, версии CE 1.4.2, 1.5.0.1, 1.5.1.0

Мне пришлось адаптировать платежный модуль для Magento, следуя всем рецептам config.xml, system.xml, etc/module/Mycompany_Mypaymentmodule.xml, которые все отлично работают.

Но недавно я дважды проверил и обнаружил ошибку: в моем config.xml я положил:

<config>
<modules>
    <Mage_Mycompany>
        <version>0.1.0</version>
    </Mage_Mycompany>
</modules>

...

Это потому, что изначально модуль должен был быть помещен в папку сообщества.
Следуя рекомендациям, я переписал классы xml и так далее, чтобы они отражали местный кодовый пул. Это тоже прошло хорошо (за исключением ошибки, которую я отладил).

Однако внутри config.xml я переименовал тэг modules-примерно так:

<config>
    <modules>
        <Mycompany_Mypaymentmodule>
        <version>0.1.0</version>
        </Mycompany_Mypaymentmodule>
</modules>

Странно то, что Magento теперь продолжает спрашивать меня о старом файле класса Helper, когда я перехожу к способам оплаты в бэкэнде, в результате чего:

Неустранимая ошибка: класс 'Mage_Mycompany_Helper_Data' не найден в пути \ to \ app \ Mage.php в строке 520

Другими словами, Magento продолжает просить вспомогательный класс моего старого, предварительно переименованного модуля, который, конечно, нигде не найти.

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

Во-вторых, когда я создаю вспомогательный класс вручную в app/code/community/Mage/Mycompany/Helper/Data.php, все идет хорошо, что для меня звучит странно, потому что сам класс не должен вызываться (так как он никогда не упоминается ни в одном config.xml).

Я должен что-то упустить, и, возможно, имя класса генерируется на лету, но я действительно не знаю, как этого избежать или исправить ... так что любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Шаг первый, конечно, это очистить кеш.

Если очистка кеша не работает.

Шаг 2: класс помощника данных используется для перевода строк для модуля.То есть у каждого помощника данных есть метод

$helper->__('Translate this symbol');

, который будет переводить строку для файла-помощника этого модуля.

Во всей системе есть несколько файлов XML, в которых вы можете захотеть определенные узлы.быть переведенным.Синтаксис выглядит примерно так:

<dhl translate="label" module="usa">
    <label>The Label</label>
</dhl>

Здесь вы говорите magento перевести узел «label», заключенный в dhl, и использовать для этого модуль usa.То есть используйте экземпляр помощника, например

$Mage::getModel('usa/data');
//same thing as above, helpers default to data
Mage::getModel('usa');

, чтобы перевести метку

$helper->__('The Label');

Я предполагаю, что один из ваших файлов XML все еще имеет старый модуль, настроенный для перевода

<sometag module="mycompany" translate="someothertag" />

, который заставляет magento искать помощника, которого там больше нет, и бум, вот твоя ошибка.

0 голосов
/ 23 июня 2011

Tha Data помощник загружается при вызове помощника перевода, т.е.: Mage::helper('modulename')->__("some string to translate").
В вашем config .xml вы объявили класс помощника модуля?:

<config>
    ...
    <global>
        ...
        <helpers>
            <yourmodule>
                <class>Yourcompanyname_Yourmodule_Helper</class>
            </yourmodule>
        </helpers>
        ...
    </global>
    ...
</config>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...