MZZ.Framework 0.3.x: Документация
Разделы

5.1 Описание структуры модуля

1. Структура каталогов
2. Actions
3. Controllers
4. Mappers
1. Структура каталогов

Структура каталогов типичного модуля mzz выглядит следующим образом (рассмотрим на примере стандартного модуля news):

news/
  actions/
  controllers/
  i18n/
  mappers/
  templates/
  news.php
  newsFolder.php

Перечислим все представленные элементы и опишем их назначение:

Далее рассмотрим примеры файлов рассматриваемого модуля. Для демонстрации выберем метод View.

2. Actions

Пример типичного файла с actions (действиями):

; news actions config
 
[view]
controller = "view"
 
[edit]
controller = "save"
jip = 1
icon = "sprite:mzz-icon/mzz-icon-doc-edit"
lang = 1
main = "active.blank.tpl"
 
[move]
controller = "move"
jip = 1
icon = "sprite:mzz-icon/mzz-icon-doc-move"
 
[delete]
controller = "delete"
jip = 1
icon = "sprite:mzz-icon/mzz-icon-doc-del"
confirm = "_ news/confirm_delete"
main = "active.blank.tpl"
 
[admin]
controller = "admin"
title = "_ admin"
admin = "1"
 
[searchByTag]
controller = "searchByTag"
title = "searchByTag"

Каждая секция (Например: [view]) обозначает имя определяемого действия. Имя может состоять из букв латинского алфавита (желательно в нижнем регистре), цифр и знака подчёркивания. В каждой секции указывается свойство controller - это имя контроллера, который будет обслуживать данное действие (ссылка на теорию MVC). Это свойство является обязательным (?).

Следующие свойства опциональны:

3. Controllers

Пример типичного контроллера (также для действия View):

<?php
/**
 * $URL: svn://svn.subversion.ru/usr/local/svn/mzz/trunk/docs/documentation/codes/modules.description.controllers-1.php $
 *
 * MZZ Content Management System (c) 2005-2007
 * Website : http://www.mzz.ru
 *
 * This program is free software and released under
 * the GNU/GPL License (See /docs/GPL.txt).
 *
 * @link http://www.mzz.ru
 * @version $Id: modules.description.controllers-1.php 3008 2009-02-06 15:02:36Z striker $
 */
 
/**
 * NewsViewController: контроллер для метода list модуля news
 *
 * @package modules
 * @subpackage news
 * @version 0.1.1
 */
 
class newsViewController extends simpleController
{
    protected function getView()
    {
        $newsMapper = $this->toolkit->getMapper('news', 'news');
 
        $id = $this->request->getInteger('id', SC_PATH);
        $news = $newsMapper->searchById($id);
 
        if (empty($news)) {
            return $this->forward404($newsMapper);
        }
 
        $this->smarty->assign('news', $news);
        return $this->smarty->fetch('news/view.tpl');
    }
}
 
?>

В каждом контроллере должен быть определён метод getView(). Этот метод возвращает результат работы действия.

4. Mappers

О мапперах читайте в соответствующем разделе: орм.мапперы.