Ошибка Magento Helper Class Not Found - PullRequest
       0

Ошибка Magento Helper Class Not Found

15 голосов
/ 30 августа 2011

Я учусь создавать собственное расширение, следуя этому руководству, http://www.pierrefay.fr/category/developpement/magento

Когда я пытаюсь открыть админ расширения, я получаю Fatal error: Class 'Mage_Test_Helper_Data' not found in /var/www/html/dev/app/Mage.php on line 520

Но я думаю, что нетиспользуя вспомогательный класс в любом месте расширения. Ваши предложения приветствуются.

Вот мой файл config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Package_Test>
            <version>1.0.0</version>
        </Package_Test>
    </modules>
    <frontend>
        <routers>
            <routerfrontend>
                <use>standard</use>
                <args>
                    <module>Package_Test</module>
                    <frontName>test</frontName>
                </args>
            </routerfrontend>
        </routers> 
        <layout>
            <updates>
                <test>
                    <file>test.xml</file>
                </test>
            </updates>
        </layout>    
    </frontend>
    <admin> 
        <routers>
            <test>  
                <use>admin</use>
                <args>
                    <module>Package_Test</module>
                    <frontName>admintest</frontName>
                </args>
            </test>
        </routers>
    </admin>
    <adminhtml>
        <layout>
            <updates>
                <test>
                    <file>test.xml</file>
                </test>
            </updates>
        </layout>
        <menu>
        <test translate="title" module="adminhtml">
            <title>My Module</title>
            <sort_order>100</sort_order>
            <children>
                <items module="Test">
                    <title>Address Book</title>
                    <action>admintest/adminhtml_index</action>
                </items>
            </children>
        </test>
        </menu>
    </adminhtml>
    <global>
         <helpers>
            <class>Package_Test_Helper</class>
         </helpers>
        <blocks>
            <test>
                <class>Package_Test_Block</class>
            </test>
        </blocks>
        <models>
            <test>
                <class>Package_Test_Model</class>
                <resourceModel>test_mysql4</resourceModel>
            </test>
            <test_mysql4>
                <class>Package_Test_Model_Mysql4</class>
                <entities>
                    <test>
                        <table>package_test</table>
                    </test>
                </entities>
            </test_mysql4>
        </models>
        <resources>
            <test_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </test_write>
            <test_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </test_read>
        </resources>
    </global>
</config>

Ответы [ 7 ]

25 голосов
/ 07 декабря 2011

Если у вас включена компиляция, попробуйте отключить или перекомпилировать в System, Tools, Compilation.

Если вы не можете войти в интерфейс администратора, но имеете доступ по SSH, вы можете отключить его с помощью:

php -f shell/compiler.php -- disable
php -f shell/compiler.php -- clear
php -f shell/compiler.php -- state

Окончательный результат должен выглядеть следующим образом:

Compiler Status:          Disabled
Compilation State:        Not Compiled
Collected Files Count:    0
Compiled Scopes Count:    0
15 голосов
/ 30 августа 2011

Даже если вы сами не используете помощника, администратор Magento делает.Вот почему вы всегда должны включать Data helper в свои расширения.Так что следующего кода в вашем Helper / Data.php

class Package_Test_Helper_Data extends Mage_Core_Helper_Abstract
{

}

и

<global>
    <helpers>
        <test>
            <class>Package_Test_Helper</class>
        </test>
    </helpers>
</global>

в вашем config.xml должно быть достаточно.

4 голосов
/ 12 декабря 2014

Чтобы расширить ответ @ alexei-yerofeyev, есть несколько мест, которые могут вас укусить.

Допустим, вы определяете своего помощника следующим образом:

<helpers>
    <package_test>
        <class>Package_Test_Helper</class>
    </package_test>
</helpers>

Выможет создать шаблон электронной почты следующим образом:

<template>
    <email>
        <test_email module="package_test">
            <label>Test Email</label>
            <file>package/test_email.html</file>
            <type>html</type>
        </test_submission>
    </email>
</template>

В этой ситуации <package_test> и module="package_test" должны соответствовать точно , включая заглавные буквы.

То же самое относится и к коду, который использует ваш помощник, например:

Mage::helper('package_test')->something();

Хотя обычно это формат [package]_[module], это не всегда так.Вы можете столкнуться с модулем Company_Widget с помощником по имени cmp_widg, и вам нужно будет сопоставить это имя помощника.

2 голосов
/ 18 октября 2012

Если вы добавили расширение и столкнулись с той же проблемой, просто очистите папку кеша вручную , потому что администратор не позволит войти внутрь. Я столкнулся с той же проблемой, затем я сделал это. Ошибка была удалена. Так что это была ошибка кеша.

1 голос
/ 22 ноября 2014

Прежде всего вам необходимо удалить папку «cache» в var / cache ....

после удаления перейдите в корневую папку magento, откройте index.php и замените код

Найти этот код

/**
  * Compilation includes configuration file
  */
  define('MAGENTO_ROOT', getcwd());
  $compilerConfig = MAGENTO_ROOT . '/includes/config.php';
  if (file_exists($compilerConfig)){
    include $compilerConfig;
  }

Заменить на этот код

 /**
   * Compilation includes configuration file<br />
   */
   define('MAGENTO_ROOT', getcwd());<br />
   /*
    $compilerConfig = MAGENTO_ROOT . '/includes/config.php';
    if (file_exists($compilerConfig)){
      include $compilerConfig;<br />
    }
   */

Наконец-то обновите страницу администрирования Magento ..

Спасибо, что прочитали .... Надеюсь, этот ответ полезен для вас.

0 голосов
/ 25 марта 2015

Я столкнулся с той же проблемой. Это было действительно странно, потому что это произошло на клоне производства. Наконец я смог отследить проблему до проблемы с разрешением. Смена всех разрешений рекурсивно исправлена:

To change all the directories to 755 (-rwxr-xr-x): 
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;

To change all the files to 644 (-rw-r--r--): 
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;

Взял разрешения команды здесь . Удачи!

0 голосов
/ 26 марта 2012

Проверьте вызовы помощника в файлах Block / Adminhtml ... может быть, что-то там вызывает неправильный помощник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...