Контроллер
Контроллер модуля – класс Модуль в файле 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: имя метода
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
