Контроллер
Контроллер модуля – класс Модуль в файле modules/модуль/модуль.php.
В классе описаны:
- массив
$rewrite_variable_names
– пременные, передаваемые в URL; - функция
init()
– инициализация модуля; - функция
action()
– обработка данных в модуле; - шаблонные функции.
Переменные, передаваемых в URL определяются для каждого модуля (cписок доступных переменных).
Пример:
public $rewrite_variable_names = array('page', 'show', 'year', 'month', 'day', 'param', 'edit', 'sort');
Функция инициализации модуля вызывается, если модуль подключен к текущей странице. В ней происходит выбор функции модели модуля в зависимости от
переданных параметров. Модель модуля подключается автоматически при первом вызове ее из контроллера через переменную $this->module
.
Пример:
// если в URL передана переменная show, вызываем функцию id в модели – показываем страницу товара
if($this->diafan->_route->show)
{
$this->model->id();
}
// иначе вызываем функцию list_ в модели – выводим список товаров
else
{
$this->model->list_();
}
Функция обработки данных вызывается, если передана переменная $_POST["module"] = 'название_модуля'
. Обработка действий модуля подключается автоматически при первом вызове ее из контроллера через переменную $this->action
.
В этой функции можно
- проверить авторизован ли пользователь:
Пример:
$this->action->check_user();
if ($this->action->result())
return;
- проверить идентификационный хэш авторизованного пользователя:
Пример:
$this->action->check_user_hash();
if ($this->action->result())
return;
- убедиться, что запрос был сделан со страницы модуля
Пример:
if($this->diafan->_site->module != 'forum')
return;
- выбрать функцию из файла modules/модуль/модуль.action.php, которая будет обрабатывать запрос:
Пример:
if(! empty($_POST["action"]))
{
switch($_POST["action"])
{
case 'add':
return $this->action->add();
case 'edit':
return $this->action->edit();
}
}
Шаблонные функции модуля – определяются условия, при которых функция не отображается, фильтруются полученные атрибуты, подключается соответствующие функции в модели и представлении модуля. Подробнее смотрите в разделе «Как добавить шаблонный тег».
Класс Controller
Контроллер модуля наследует класс Controller – это каркас для всех страниц.
Свойства
var rewrite_variable_names = array() – переменные, передаваемые в URL страницы.
Пример:
// в модуле будет использована пагинация, деление на категории и показана страница элемента
public $rewrite_variable_names = array('page', 'cat', 'show');
var result – сгенерированные в моделе данные, передаваемые в шаблон.
Методы
void init () – Инициализация модуля.
Функция определяется в контроллере модуля.
Пример:
// в модуле "Файловый архив" modules/files/files.php
public function init()
{
if($this->diafan->configmodules("cat"))
{
$this->rewrite_variable_names[] = 'cat';
}
if ($this->diafan->_route->show)
{
$this->model->id();
}
elseif (! $this->diafan->configmodules("cat"))
{
$this->model->list_();
}
elseif (! $this->diafan->_route->cat)
{
$this->model->first_page();
}
else
{
$this->model->list_category();
}
}
void action () – Обрабатывает полученные данные из формы.
Функция определяется в контроллере модуля.
Пример:
// в модуле "Корзина товаров" modules/cart/cart.php
public function action()
{
if($this->diafan->configmodules('security_user', 'shop'))
{
$this->action->check_user();
if ($this->action->result())
return;
}
if(! empty($_POST["action"]))
{
switch($_POST["action"])
{
case 'recalc':
return $this->action->recalc();
case 'order':
return $this->action->order();
case 'one_click':
return $this->action->one_click();
case 'upload_image':
return $this->action->upload_image();
case 'delete_image':
return $this->action->delete_image();
}
}
}
void api () – Обрабатывает полученные данные из формы.
void exec () – Обрабатывает полученные данные из формы.
void show_module () – Выводит шаблон модуля.
Шаблон модуля подключается автоматически. Названием шаблона задается в моделе переменной$this->result["view"]
.void get_global_variables () – Определяет свойства страницы, если они заданы в модуле.
Функция вызывается автоматически.array get_attributes (array &$attributes) – Задает неопределенным атрибутам шаблонного тега значение по умолчанию.
- array $attributes: массив определенных атрибутов
Пример:
// шаблонный тег show_block module="clauses" предусматривает несколько атрибутов
// все они перед использованием должны быть переданы как аргументы
// для функции get_attributes в начале функции show_block()
$this->get_attributes($attributes, 'count', 'site_id', 'cat_id', 'sort', 'images', 'images_variation', 'only_module', 'template');
boolean method_exists (string $module, string $name, [string $method_name = false]) – Проверяет, существует ли класс или метод в классе.
- string $module: имя модуля
- string $name: тип класса
- string $method_name: имя метода
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.