Файл контроллера был загружен, но класс не существует

У меня возникла проблема обойти эту ошибку в 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