Файл контроллера был загружен, но класс не существует
У меня возникла проблема обойти эту ошибку в Magento:
"Файл контроллера был загружен, но класс не существует". (Полный стоп внизу)
Я стараюсь следовать этому руководству: Создать новый модуль HelloWorld - в Magento.
... хотя я использую собственные имена компаний/классов и т.д. вместо "привет мир"
У меня возникли проблемы с поиском хорошей документации по Magento в целом, и я очень новичок в этом...
может ли кто-нибудь предоставить некоторые общие причины, советы или прозрение? Я болотистый, гугл это часами, проверяет разрешения и структуру файлов. Вы называете это.
Trace:
#0 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(306): Mage::exception('Mage_Core', 'Controller file...')
#1 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(282): Mage_Core_Controller_Varien_Router_Standard->_inludeControllerClass('/var/www/dev_ml...', 'Foo_Wr...')
#2 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(195): Mage_Core_Controller_Varien_Router_Standard->_validateControllerClassName('foo_Wr...', 'index')
#3 /var/www/dev/app/code/core/Mage/Core/Controller/Varien/Front.php(158): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#4 /var/www/dev/app/Mage.php(459): Mage_Core_Controller_Varien_Front->dispatch()
#5 /var/www/dev/index.php(65): Mage::run()
#6 {main}
Ответы
Ответ 1
Эта ошибка означает, что magento нашел файл для вашего контроллера, где он ожидал (app/code/local/Namespace/Module/controllers/FooController.php)
, но в том, что внутри класса не было имени, которое оно ожидало (это не было Namespace_Module_FooController).
Ответ 2
Надеюсь, вы получили это отсортированное, просто чтобы вы знали, что я смотрел тот же учебник, и я думаю, что эта ошибка может быть устранена добавлением объявления <? php в начало образцов кода php.
Ответ 3
Вы можете найти эту статью, (часть большая серия) (self-link) более полезны, и это больше связано с тем, почему вы делаете, что позволит вам лучше отлаживать вещи самостоятельно в будущем.
Что касается вашей конкретной ошибки
Файл контроллера был загружен, но класс не существует
Это означает, что magento смог правильно потребовать/включить файл, в который вы разместили ваш контроллер, в , но класс контроллера был неверно назван. Контроллеры должны быть названы
Packagename_Module_ControllernameController
и находится в папке
app/code/local/Packagename/Modulename/controllers/ControllernameController.php
Ответ 4
Я получал эту ошибку, потому что я использовал следующий код в своем CartController (Overridden)
require_once "Mage/Checkout/controllers/CartController.php";
class Muk_Mycart_CartController extends Mage_Core_Controller_Front_Action
{
}
вместо следующего кода строки
require_once "Mage/Checkout/controllers/CartController.php";
class Muk_Mycart_Checkout_CartController extends Mage_Core_Controller_Front_Action
{
}
Мне не хватает "Checkout" в "Muk_Mycart_CartController". Это ошибка, потому что я использовал следующий код в своем CartController (Overridden)
Моя структура каталогов была такой
\app\code\local\Muk\Mycart\controllers\Checkout
\app\code\local\Muk\Mycart\controllers\Checkout\CartController.php