MZZ.Framework 1.0
Разделы

4.3 Controller

4.3.1 Создание
4.3.2 Базовые методы и свойства
4.3.3 Служебные

4.3.1 Создание

Контроллеры располагаются в директории controllers модуля. Имена контроллеров должны соответствовать следующему соглашению: <Имя_модуля><Имя_контроллера>Controller (todo: описать, откуда берется <Имя_контроллера>, а то не совсем ясно что это за имя). Например, для модуля news контроллер view будет называться: newsViewController.

Контроллеры в ваших модулях должны наследоваться от базового абстрактного класса simpleController. Каждый контроллер должен реализовывать защищённый (protected) метод getView().

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

class helloWorldController extends simpleController
{
    protected function getView()
    {
        return 'Hello, world!';
    }
}

В большинстве случаев вам не придется вручную создавать файлы и базовый код ваших контроллеров. Все эти действия выполнит встроенный в фреймворк инструмент скаффолдинга devToolbar (todo ссылка на тулбар)

4.3.2 Базовые методы и свойства

Для упрощения процесса разработки базовый класс simpleController предоставляет ряд методов и свойств.

Методы:

Метод Аргументы Описание
setPager
  • mapper $mapper - маппер, к которому будет применена пагинация;
  • [int $per_page = 20] - число элементов на странице;
  • [bool $reverse = false] - выводить записи в обратном порядке;
  • [int $round_items = 2] - число страниц, выводимых слева и справа от текущей.
Присоединяет класс пагинации к мапперу, который выбирает данные на страницу. Также в smarty автоматически передаётся инстанция объекта-пейджера с именем $pager (todo ссылка на описание класса), который можно отобразить в произвольном месте.
Пример использования: Выберем список новостей, по 10 новостей на странице. И отобразим их в обратном порядке:
newsListController.php:
$this->setPager($newsFolderMapper, 10, true); // устанавливаем pager
$this->smarty->assign('news', $newsFolderMapper->getItems($newsFolder)); // ищем новости
list.tpl:
<div class="pages">{$pager->toString()}</div>
fetch
  • string $path - имя файла шаблона.
Запуск на исполнение указанного шаблона.
return $this->fetch('news/list.tpl');
redirect
  • string $url - адрес, на который будет перенаправлен пользователь;
  • [int $code = 302] - код http-ответа.
Перенаправление пользователя по указанному урлу.
Пример использования: Перенеправление на главную страницу приложения:
$url = new url('default');
return $this->redirect($url->get());
forward
  • string $moduleName - имя модуля;
  • string $actionName - имя действия.
Передача управления другому контроллеру.
Пример использования: Вызов из текущего контроллера действия dashboard модуля admin:
return $this->forward('admin', 'dashboard');

Свойства:

Свойство Тип Описание
$toolkit stdToolkit Объект toolkit (todo ссылка на описание)
$id = $this->toolkit->getMapper('news', 'news');
$request httpRequest Объект запроса (todo ссылка на описание)
$path = $this->request->getString('path');
$response httpResponse Объект ответа (todo ссылка на описание)
$this->response->setCookie('cookie_name', 'cookie_data');
$smarty mzzSmarty Smarty (подробнее)
$this->smarty->assign('news', $newsFolderMapper->getItems($newsFolder));
$this->smarty->assign('folderPath', $newsFolder->getTreePath());

4.3.3 Служебные