- 1. Структура каталогов
- 2. Actions
- 3. Controllers
- 4. Mappers
Структура каталогов типичного модуля mzz выглядит следующим образом (рассмотрим на примере стандартного модуля news):
news/ actions/ controllers/ i18n/ mappers/ templates/ news.php newsFolder.php
Перечислим все представленные элементы и опишем их назначение:
- actions/ — каталог, в котором расположены ini-файлы, описывающие, какие действия есть у конкретного Доменного Объекта данного модуля. (ссылка на подробное описание в этом же разделе)
- controllers/ — каталог, в котором расположены контроллеры модуля. (ссылка на описание что такое контроллеры)
- i18n/ — каталог, в котором расположены файлы локализации модуля
- mappers/ — каталог, в котором расположены мапперы. (ссылка на описание мапперов)
- template/ — каталог, в котором расположены шаблоны модуля
- news.php, newsFolder.php — Доменные Объекты модуля
news.
Далее рассмотрим примеры файлов рассматриваемого модуля. Для демонстрации выберем метод View.
Пример типичного файла с 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). Это свойство является обязательным (?).
Следующие свойства опциональны:
- jip — представляет собой булевое значение true или false, и означающие соответственно наличие или отсутствие данного пункта в jip'ах (ссылка), выводимых для данных объектов.
- title — определяет надпись, которая будет выведена в jip. Используется при jip = true.
- icon — определяет иконку, которая будет выведена в jip. Используется при jip = true. (desperado, опиши, пожалуйста, что оно из себя представляет)
- lang — определяет, что действие мультиязычное (в этом случае в jip будет отрисовываться подменю со списком языков).
- confirm — определяет текст предупреждения, который будет выведен на форме с двумя кнопками Ok и Отмена при щелчке на этом пункте меню в jip. Используется при jip = true.
- main — определяет main шаблон для данного действия. (описать допустимые значения)
- admin — представляет собой булевое значение. Если admin = true, то этот экшн предназначается для администрирования модуля и будет отображен в admin-меню
Пример типичного контроллера (также для действия 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(). Этот метод возвращает результат работы действия.
О мапперах читайте в соответствующем разделе: орм.мапперы.