Zend Framework: включение модульной архитектуры

К сожалению, не все рутинные задачи доступны с помощью Zend_Tool. Одна из таких задач — включение механизма модульной архитектуры, что на самом деле немного удивительно, т.к. команда на создание модуля со структурой по умолчанию существует.

Путь создания приложения с нуля с помощью Zend_Tool довольно прост:

  1. Удостоверяемся, что есть доступ к zf.sh (для Linux) или zf.bat (для Windows);
  2. Заходим в директорию, в которой хотим создать приложение, например так
    cd /home/user/data/www/example.ru/
    
  3. Cоздаем проект Zend Framework:
     zf create project example
     
  4. Включаем поддержку шаблонов (layout):
     zf enable layout
     
  5. Создаем, например, модуль video:
     zf create module video
     
  6. Создаем для него Index контроллер с действием IndexAction:
     zf create controller Index index-action-included video
     
  7. В файле /application/config/application.ini включаем поддержку модулей, вписав после тега [production] следующее:

    resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
    resources.modules[] =
  8. Для включения автозагрузки классов модуля (моделей или форм, например) в корне папки модуля (/application/modules/video/) создаем файл Bootstrap.php со следующим содержимым:
    <?php class Video_Bootstrap extends Zend_Application_Module_Bootstrap {}

Вот и всё, все дело в последнем шаге. К сожалению, без него стандартные правила направления запросов к модулю не работают, то есть запрос типа:

example.ru/video/index/index

вызовет ошибку, хотя должен был вызвать IndexAction в IndexController в модуле video.
Строка «resources.modules[] =» включает автозагрузку классов для модулей.

Созданное в записи приложение с моим небольшим изменением для показа времени выполнения скриптов можно скачать по этой ссылке.

Ссылки в записи