Установка модуля и поддержка разных layout в модулях для Zend Framework 2

ZF2 поддерживает модульность, но как нужно установить модуль, чтобы он работал в вашем проекте. В этой статье рассмотрим процесс установки, который применим к любому модулю. В качестве устанавливаемого модуля возьмем EdpModuleLayouts, с помощью которого можно решить задачу внедрения разных layout для разных модулей.

Установка модуля в ZF2

Я выбрала модуль EdpModuleLayouts. Для установки буду использовать стандартный для ZF2 способ подключения пакетов, то есть Composer, который должен присутствовать у вас в корне директории сайта (omposer.phar), если его там нет, то просто загрузите его с сайта и положите в директорию.

Для того, чтобы Composer установил нужный нам модуль, нужно прописать пакет этого модуля в конфигурационный файл composer.json, который тоже должен быть в корне проекта на ZF2.

Правильный референс на пакет для модуля можно поискать в архиве пакетов: https://packagist.org/.

Описание нужного мне пакета: https://packagist.org/packages/evandotpro/edp-module-layouts

Нам нужна строчка: require "evandotpro/edp-module-layouts": "dev-master". Это описание и указываем в конфигурационном файле composer.json.

 "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.3.*",
        "evandotpro/edp-module-layouts": "dev-master"
    }

Из консоли переходим в директорию проекта, например, /develop/simple-projects/zf2 и запускаем команду:

php composer.phar update

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

Следующим шагом нужно добавить модуль в конфигурационный файл проекта config\application.config.php

    'modules' => array(
        'Application',
        'EdpModuleLayouts'
    ),

В дальнейшем модуль может быть использован в стандартном режиме ZF2.

Использование разных layout для разных модулей ZF2

После установки модуля EdpModuleLayouts необходимо произвести настройку layout для каждого модуля в конфигурационном файле: config/autoload в зависимости от ваших нужд это может быть как глобальная конфигурация global.php, так и локальная local.php. В возвращаемый массив добавьте:

    'module_layouts' => array(
        'Application' => 'layout/layout',
        'Users' => 'layout/main',
    ),


конец страницы