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>
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.
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
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.
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.
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.
Vérifiez les appels d'assistance dans les fichiers Block/Adminhtml ... peut-être que quelque chose appelle une mauvaise assistance.
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!