В этой главе мы узнаем, как создать модуль на основе MVC в Zend Framework. Давайте создадим модуль, называемый Tutorial, чтобы понять процесс создания модуля.
-
Создайте новый класс PHP с именем Module в каталоге –myapp / module / Tutorial / src / и реализуйте интерфейс ConfigProviderInterface.
-
Установите Tutorial в качестве пространства имен для класса Module .
-
Напишите публичную функцию getConfig в классе Module и верните файл конфигурации для учебного модуля.
Создайте новый класс PHP с именем Module в каталоге –myapp / module / Tutorial / src / и реализуйте интерфейс ConfigProviderInterface.
Установите Tutorial в качестве пространства имен для класса Module .
Напишите публичную функцию getConfig в классе Module и верните файл конфигурации для учебного модуля.
Полный код для класса Module выглядит следующим образом:
<?php namespace Tutorial; use Zend\ModuleManager\Feature\ConfigProviderInterface; class Module implements ConfigProviderInterface { public function getConfig() { return include __DIR__ . '/../config/module.config.php'; } }
Сконфигурируйте модуль Tutorial в composer.json в разделе автозагрузки , используя следующий код.
"autoload": { "psr-4": { "Application\\": "module/Application/src/", "Tutorial\\": "module/Tutorial/src/" } }
Обновите приложение с помощью команды обновления composer, как показано ниже.
composer update
Команда composer внесет необходимые изменения в приложение и покажет журналы в командной строке, как показано ниже —
Loading composer repositories with package information Updating dependencies (including require-dev) - Removing zendframework/zend-component-installer (0.3.0) - Installing zendframework/zend-component-installer (0.3.1) Downloading: 100% - Removing zendframework/zend-stdlib (3.0.1) - Installing zendframework/zend-stdlib (3.1.0) Loading from cache - Removing zendframework/zend-eventmanager (3.0.1) - Installing zendframework/zend-eventmanager (3.1.0) Downloading: 100% - Removing zendframework/zend-view (2.8.0) - Installing zendframework/zend-view (2.8.1) Loading from cache - Removing zendframework/zend-servicemanager (3.1.0) - Installing zendframework/zend-servicemanager (3.2.0) Downloading: 100% - Removing zendframework/zend-escaper (2.5.1) - Installing zendframework/zend-escaper (2.5.2) Loading from cache - Removing zendframework/zend-http (2.5.4) - Installing zendframework/zend-http (2.5.5) Loading from cache - Removing zendframework/zend-mvc (3.0.1) - Installing zendframework/zend-mvc (3.0.4) Downloading: 100% - Removing phpunit/phpunit (5.7.4) - Installing phpunit/phpunit (5.7.5) Downloading: 100% Writing lock file Generating autoload files
Создайте файл конфигурации модуля «module.config.php» в / config / со следующим кодом —
<?php namespace Tutorial; use Zend\ServiceManager\Factory\InvokableFactory; use Zend\Router\Http\Segment; return [ 'controllers' => [ 'factories' => [Controller\TutorialController::class => InvokableFactory::class,], ], 'view_manager' => [ 'template_path_stack' => ['tutorial' => __DIR__ . '/../view',], ], ];
Файл конфигурации состоит из трех частей, и они следующие:
-
Конфигурация контроллера — укажите контроллеры, доступные внутри модуля.
-
Конфигурация маршрутизации — укажите, как контроллеры в модуле должны быть преобразованы в URL-адреса.
-
Просмотр конфигурации — укажите конфигурацию, относящуюся к просмотру движка, например расположение просмотров и т. Д.
Конфигурация контроллера — укажите контроллеры, доступные внутри модуля.
Конфигурация маршрутизации — укажите, как контроллеры в модуле должны быть преобразованы в URL-адреса.
Просмотр конфигурации — укажите конфигурацию, относящуюся к просмотру движка, например расположение просмотров и т. Д.
Сконфигурируйте модуль Tutorial в файле конфигурации уровня приложения — myapp / config / modules.config.php.
return ['Zend\Router', 'Zend\Validator', 'Application', 'Tutorial'];
Запустите приложение, выполнив команду composer в корне папки приложения.
Мы успешно добавили новый модуль, но нам все еще нужно добавить Controller, Routing и Views, чтобы успешно запустить модуль Tutorial .