web-dev-qa-db-fra.com

Erreur Magento Helper Class Not Found

J'apprends à créer une extension personnalisée en suivant ce tutoriel, http://www.pierrefay.fr/category/developpement/magento

Quand j'essaie d'ouvrir l'extension admin, je reçois Fatal error: Class 'Mage_Test_Helper_Data' not found in /var/www/html/dev/app/Mage.php on line 520 

Mais je pense ne pas utiliser la classe d'assistance nulle part dans l'extension. Vos suggestions sont les bienvenues.

Voici mon fichier 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>
15
blakcaps

Même si vous n'utilisez pas helper, c'est l'administration Magento. C'est pourquoi vous devez toujours inclure Data helper dans vos extensions. Donc le code suivant dans votre Helper/Data.php

class Package_Test_Helper_Data extends Mage_Core_Helper_Abstract
{

}

et

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

dans votre config.xml devrait suffire.

15
Alexei Yerofeyev

Si vous avez activé la compilation, essayez de la désactiver ou de la recompiler dans Système, Outils, Compilation.

Si vous ne pouvez pas entrer dans l'interface d'administration mais avez un accès SSH, vous pouvez le désactiver avec:

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

La sortie finale devrait ressembler à:

Compiler Status:          Disabled
Compilation State:        Not Compiled
Collected Files Count:    0
Compiled Scopes Count:    0
25
reflexiv

Pour développer la réponse de @ alexei-yerofeyev, il existe quelques endroits où cela peut vous mordre.

Disons que vous définissez votre assistant comme ceci:

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

Vous pouvez créer un modèle de courrier électronique comme ceci:

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

Dans cette situation, <package_test> et module="package_test" doivent correspondre à exactement , y compris la capitalisation.

Il en va de même pour le code utilisant votre assistant, comme ceci:

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

Bien que ce soit généralement au format [package]_[module], ce n'est pas toujours le cas. Vous rencontrerez peut-être un module Company_Widget avec un assistant appelé cmp_widg et vous devrez faire correspondre ce nom d'assistance.

4
Tyler V.

Si vous ajoutez une extension et que vous rencontrez le même problème, il vous suffira alors de vider votre dossier de cache manuellement car l'administrateur ne permettra pas l'accès à l'intérieur. Je faisais face au même problème alors je l'ai fait. L'erreur a été supprimée. C'était donc l'erreur de cache.

2
user1755471

Tout d’abord, vous devez supprimer le dossier "cache" dans var/cache ....

après la suppression, allez dans votre dossier racine magento et ouvrez index.php et remplacez le code 

Trouver ce code 

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

Remplacer par ce code 

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

Enfin, actualisez votre page d’administrateur Magento.

Merci d'avoir lu ... J'espère que cette réponse vous sera utile.

1
chintan kotadiya

Vérifiez les appels d'assistance dans les fichiers Block/Adminhtml ... peut-être que quelque chose appelle une mauvaise assistance. 

0
James Dykes

J'ai rencontré le même problème. C'était vraiment bizarre parce que c'est arrivé sur un clone de production. Enfin, je pourrais retracer le problème jusqu'à un problème de permission. La modification de toutes les autorisations l'a corrigé de manière récursive:

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 {} \;

A pris les commandes de permission de ici . Bonne chance!

0
Stefan