Недопустимый класс помощника Magento
Я изучаю создание пользовательского расширения, следуя этому руководству, 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>
Ответы
Ответ 1
Даже если вы сами не используете помощника, администратор 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 должно быть достаточно.
Ответ 2
Если у вас включена компиляция, попытка отключения или повторной компиляции в 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
Ответ 3
Чтобы расширить ответ от @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
, и вам нужно будет сопоставить это имя помощника.
Ответ 4
Если вы добавите расширение и столкнулись с той же проблемой, просто очистите папку кэша вручную, потому что администратор не позволит войти внутрь. Я столкнулся с той же проблемой, что и я. Ошибка была удалена. Таким образом, это была ошибка кэша.
Ответ 5
Прежде всего вам нужно удалить папку "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..
Спасибо за чтение.... Надеюсь, этот ответ вам поможет.
Ответ 6
Проверьте вызовы помощника в файлах Block/Adminhtml... может быть, что-то там вызывает неправильный помощник.
Ответ 7
Я столкнулся с той же проблемой. Это было действительно странно, потому что это действительно произошло на клоне производства. Наконец, я мог отследить проблему до проблемы с разрешением. Изменение всех разрешений рекурсивно зафиксировало это:
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 {} \;
Взяли команды разрешения здесь. Удачи!