Папки контроллера и новый автозагрузчик в Zend Framework

После введения автозагрузчика я начал портировать существующее приложение ZF. Непосредственной ошибкой было то, что IndexController был расширен BaseController, который теперь не может быть найден, хотя он находится в папке application/controllers с другими контроллерами.

Требует ли парадигма автозагрузчика, чтобы BaseController был переименован в My_BaseController и помещен в папку библиотеки? С другой стороны, так приятно хранить все контроллеры в одной папке с BaseController.


person AlexA    schedule 18.11.2009    source источник
comment
Привет, я думаю, вам нужно назвать контроллер BaseController и класс внутри этого файла как Default_BaseController.   -  person opHASnoNAME    schedule 18.11.2009


Ответы (2)


arrow_upward
5
arrow_downward

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

См. http://framework.zend.com/manual/en/zend.loader.autoloader-resource.html#zend.loader.autoloader-resource.module для получения информации об автозагрузчике ресурсов/модулей.

Вы можете делать что-то по старинке и просто require_once('BaseController.php');

person smack0007    schedule 18.11.2009
comment
Я буду придерживаться require_once, так как мне это нужно только 1 раз. Но буду иметь в виду, что для того, чтобы иметь какие-либо пользовательские файлы, я должен создать собственный класс автозагрузчика. Спасибо! - person AlexA; 18.11.2009

arrow_upward
0
arrow_downward

Я на самом деле не видел, чтобы что-то использовало application/controllers раньше

Как правило, вещи помещались в application/modules/<module>/controllers/, а «универсальные» контроллеры — в модуль default.

Вы можете получить лучший ответ, если приведенное выше неверно, если вы укажете, между какими версиями вы переходите, и как вы пытаетесь вызвать контроллер?

person Mez    schedule 18.11.2009
comment
@Mez: все мои приложения используют макет application/controllers, я никогда ничего не кодировал с помощью модуля, и я думаю, что впервые я получил эту схему каталогов, купив ее с помощью Zend Studio. - person RageZ; 18.11.2009
comment
Переход 1.7.7 и 1.9.1. Так что лучше всего использовать модуль по умолчанию, даже если приложение содержит только 1 модуль? Как правило, это базовое приложение, выросшее из основного обучающего приложения ZF. Код представляет собой класс IndexController, расширяющий My_BaseController, и контроллер индекса просто вызывается из URL-адреса zfapp/index. Я предполагаю, что FrontController с его dispatch() отправляет пользователя в IndexController. Затем возникает ошибка. - person AlexA; 18.11.2009
comment
Создайте новый проект с помощью ZF Tool и создайте каталог application/controllers. И НЕТ каталога модулей. То же самое для автозагрузки: по умолчанию должно быть прямо в приложении. - person opHASnoNAME; 18.11.2009