Файл контроллера был загружен, но класс не существует - PullRequest
17 голосов
/ 04 февраля 2010

У меня возникли проблемы при обходе этой ошибки в Magento:

"Файл контроллера загружен, но класс не существует". (Полный стек внизу)

Я, по сути, пытаюсь следовать этому руководству: Создать новый модуль «HelloWorld» - в Magento .

... хотя я использую собственные названия компаний / классов и т. Д. Вместо слова "hello world"

У меня проблемы с поиском хорошей документации по 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}

Ответы [ 4 ]

38 голосов
/ 04 февраля 2010

Эта ошибка означает, что magento нашел файл для вашего контроллера, где ожидалось значение (app/code/local/Namespace/Module/controllers/FooController.php), но внутри класса не было ожидаемого имени (это не Namespace_Module_FooController ).

22 голосов
/ 09 сентября 2011

Надеюсь, вы отсортировали это, просто чтобы вы знали, что я посмотрел тот же учебник, и я думаю, что эту ошибку можно исправить добавлением объявления <? Php в начало примеров кода php. </p>

15 голосов
/ 29 декабря 2010

Вы могли бы найти эту статью , (часть более крупной серии ) (самостоятельная ссылка) более полезной, и это больше объясняет, почему вы делаете, что позволит вам лучше отлаживать вещи самостоятельно в будущем.

Что касается вашей конкретной ошибки

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

Это означает, что magento смог правильно потребовать / включить файл, в который вы поместили свой контроллер, в , но класс контроллера был назван неправильно. Контроллеры должны быть названы

Packagename_Module_ControllernameController

и находится в папке

app/code/local/Packagename/Modulename/controllers/ControllernameController.php
2 голосов
/ 01 марта 2013

Я получил эту ошибку, потому что я использовал следующий код в моем CartController (переопределено)

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

Мне не хватало «Оформить заказ» в «Muk_Mycart_CartController». Это ошибка, потому что я использовал следующий код в моем CartController (переопределен)

Моя структура каталогов была такой

\app\code\local\Muk\Mycart\controllers\Checkout
\app\code\local\Muk\Mycart\controllers\Checkout\CartController.php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...