Вот что я сделал, чтобы попытаться следовать вашему примеру (с нуля):
$ zf create project .
$ zf create module product
$ zf create module default
Затем я переместил controllers
, models
и views
с ./application
на ./application/modules
.
Затем я открыл application.ini, и заменил эту строку (которая сообщает ZF, где искать контроллеры в немодульном приложении):
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
на:
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
, который сообщает ZF, где искать модули.
Затем я вручную создал контроллер индекса для модуля продукта, чтобы я мог проверить, работает ли он, что и сделал.Затем я нажал http://localhost/index/index, чтобы посмотреть, работает ли индексное действие модуля по умолчанию, но это не так, вместо этого я получил ошибку:
Неустранимая ошибка: необработанное исключение 'Zend_Controller_Dispatcher_Exception' с сообщением«Недопустимый класс контроллера (« Default_ErrorController »)» в ...
похоже, что это то, куда вы попали.
Есть два способа исправить эту ошибку, и документация вводит в заблуждение (возможно, даже неправильно).Он сообщает :
Обратите внимание, что в модуле по умолчанию контроллерам не требуется префикс пространства имен.Таким образом, в приведенном выше примере контроллеры в модуле по умолчанию не нуждаются в префиксе «Default_» - они просто отправляются в соответствии с именем базового контроллера: «IndexController» и «FooController».Однако префикс пространства имен используется во всех других модулях.
, но явно указанная выше ошибка указывает на то, что ZF ищет класс ErrorController с именем Default_ErrorController.Чтобы это исправить, вы можете сделать одно из двух:
из application.ini.Эта строка указывает ZF использовать пространство имен Default_ в классах модулей по умолчанию, поэтому без него он просто будет искать IndexController.Я выбрал последний вариант, и http://localhost/index/index затем работал как положено.
В вашем случае вы сказали, что получили пустую страницу в / index / index, что означает либо:
- У вас другая проблема
- У вас отключены ошибки в режиме разработки
- Вы работаете в производственном режиме, где ошибки по умолчанию отключены (скорее всего)
, чтобы проверить последний вариант, откройте application.ini и временно измените phpSettings.display_errors
с 0 на 1 в производственном разделе.Если после этого вы получите ту же ошибку, которая была у меня выше, надеюсь, вы сможете заставить все работать.
Надеюсь, это полезно.Все, что я могу сказать, - это не слишком полагаться на Zend_Tool для управления вашим приложением - оно не может делать все, и часто легче перемещать вещи вручную, чем пытаться делать все через.команда zf;особенно при реструктуризации.