MZZ.Framework 1.0
Разделы

3.3 Модуль

3.3.1 Обзор
3.3.2 Класс модуля
3.3.3 Actions
3.3.4 Controllers
3.3.5 i18n
3.3.6 Mappers и models
3.3.7 Templates

3.3.1 Обзор

Типичная структура модуля в приложении MZZ выглядит следующим образом:

3.3.2 Класс модуля

newsModule.php представляет собой класс, описывающий модуль.

class newsModule extends simpleModule
{
    protected $classes = array(
        'news',
        'newsFolder');
 
    protected $roles = array(
        'moderator',
        'user');
 
    public function getRoutes()
    {
        return array(
            array(),
            array(
                'newsFolder' => new requestRoute('news/:name/:action', array(
                    'module' => 'news',
                    'name' => 'root',
                    'action' => 'list'), array(
                    'name' => '.*?',
                    'action' => '(?:list|create|createFolder|editFolder|deleteFolder|moveFolder)'))));
    }
}

Данный класс должен наследоваться от класса simpleModule и служит для хранения служебной информации о модуле. Так, к примеру, в данном классе содержится информация:

Помимо всего прочего, данный класс отвечает за получение мапперов и действий модуля, что позволит, к примеру, реализовать нестандартную схему получения маппера для объекта или создать так называемые multi-action контроллеры (todo: сделать раздел доки tricks и описать там такой финт)

3.3.3 Actions

В директории actions расположены файлы, определяющие набор возможных действий с каждой из сущностей модуля. Для модуля news это будут файлы news.php и newsFolder.php:

news.php:

<?php
return array(
    'view' => array(
        'controller' => 'view'
    ),
    'edit' => array(
        'controller' => 'save',
        'jip' => 1,
        'role' => array('moderator'),
        'icon' => 'sprite:mzz-icon/page-text/edit',
        'lang' => true,
        'main' => 'active.blank.tpl'
    ),
    'move' => array(
        'controller' => 'move',
        'jip' => 1,
        'role' => array('moderator'),
        'icon' => 'sprite:mzz-icon/page-text/move'
    ),
    'delete' => array(
        'controller' => 'delete',
        'jip' => 1,
        'role' => array('moderator'),
        'icon' => 'sprite:mzz-icon/page-text/del',
        'confirm' => '_ news/confirm_delete',
        'main' => 'active.blank.tpl'
    ),
    'admin' => array(
        'role' => array('moderator'),
        'controller' => 'admin',
        'title' => '_ admin',
        'admin' => true
    )
);
?>

В этом файле определены 5 действий: view, edit, move, delete и admin. Назначение этих действий легко определяется по их названию.

Рассмотрим пример простейшего actions-конфига:

<?php
return array(
    'view' => array(
        'controller' => 'view',
    )
);
?>

Как видно из примера, действие имеет только один обязательный параметр — controller. Представляет собой имя контроллера, который будет обслуживать данное действие.

Также, доступны следующие необязательные параметры для действий:

Имя переменной Описание Принимаемые значения
main

Main-шаблон для действия (todo: где описать для чего это? в процессе запуска приложения или прям тут?). Может принимать следующие значения:

  • active.main.tpl — результат работы действия будет включено в main.tpl шаблон
  • active.blank.tpl — результат работы действия будет выведено на экран без main.tpl шаблона
  • active.admin.tpl — результат работы действия будет выведен в интерфейсе административной части приложения
  • deny — данный экшн запрещен к вызову напрямую через адресную строку браузера.

Если данный параметр не задан, то по-умолчанию будет использоваться active.main.tpl шаблон.

string
jip Является ли действие действием JIP (todo: ссылка на описание JIP). Чтобы у модели было JIP-меню, в маппере необходимо подключить плагин jip. int
jip_target Указывает для JIP будет ли действие открываться в JIP-окне (по умолчанию) или будет открываться в новом окне/вкладке (значение 'new'). string
icon Иконка действия (используется для JIP) (todo: ссылка на описание). string
confirm Сообщение перед выполнением действия (используется для JIP). string
title Заголовок действия (используется для JIP). Если строка начинается со знака "_", то значение возмется из i18n. string
admin Является ли действие действием admin-части фреймворка. Если флаг выставлен в true, то данное действие будет отображаться в административной части приложения (/admin), где дополнительно появится пункт в меню с названием этого действия, параметр main будет выставлен в 'active.admin.tpl' (если не был выставлен в какое-то значение) bool
role Массив или строка ролей модуля, которым будем разрешен доступ к этому действию. Если данный параметр не указан, то доступ к действию разрешен всем. (todo: ссылка на описание механизма ролей) array|string
route_name Имя роута, который будет использоваться для построения URL'а этого действия, если используется JIP. string
route.myparam Значение, которое будет подставлено в параметр myparam роута route_name (если используется). В действии можно описать несколько параметров вида route.myparam для всех необходимых параметров роута. В качестве значения этого параметра можно использовать имена методов модели, к которой относится данный экшн, в виде '->getId' или '->getUser->getId'. Также можно использовать и скаляры. string

3.3.4 Controllers

Контроллеры предназначены для обеспечения взаимодействия моделей и отображения.

Подробнее о контроллерах читайте в соответствующем разделе.

3.3.5 i18n

В этой директории хранятся файлы локализации модуля (если она требуется). Файлы создаются отдельно для каждого из языков. Причём файлы должны именоваться следующим образом: <имя_языка>.ini. Например: en.ini.

todo ссылка на главу о i18n

3.3.6 Mappers и models

В каталоге mappers/ модуля хранятся мапперы классов, в каталоге models/ — соответствующие модели. Вместе эти классы являются частью компоненты Model в парадигме MVC.

Подробнее про Model и MVC читайте в соответствующем разделе.

3.3.7 Templates

В этой директории хранятся smarty шаблоны