Класс ckdial предназначен для отображения диалоговых форм.
Диалоговая форма – это форма, в которой отображается группа чекбоксов для выбора вариантов действий и submit-кнопка для исполнения выбранного действия. Пример работы класса - в панели управления Wad-er в меню Утилиты-Резервное копирование, Утилиты-Очистить кеш.
Основные параметры класса
Параметр | Значение по умолчанию | Описание |
ajax | true | Возможность отправления данных формы с помощь ajax-технологии. |
title | null | Заголовок для формы. |
ok_mes | array() | Сообщение об успешном отправлении формы. |
err_mes | Сообщение о неуспешном отправлении формы. | |
btn_caption | Заголовок для кнопки отправления формы. | |
_ckboxes | array() | Массив чекбоксов формы |
Описание методов
addCkbox()
public function addCkbox($id = '', $caption = '', $val = 0)
Добавление чекбокса к набору.
include_once(SYS_BASE_PATH.'main/classes/ckdial.class.php'); class ckdialm extends ckdial { //… } $f = new ckdialm(); $f->addCkbox('to_file', $parser->gt('file', __FILE__), 1);
execAction()
public function execAction()
Исполняемое действие. Метод вызывается, когда пользователь нажимает на кнопку формы. Метод абстрактный, должен переопределяться в дочернем классе.
show()
public function show()
Отображение формы.
Пример использования класса. Этот простой пример отображает на странице 2 чекбокса. При выборе одного из них происходит запись строки This is my string или в файл userdata/mess.txt, или в таблицу БД sys_messages. Под чекбоксами находится кнопка Сохранить, при нажатии на которую реализуется поставленная задача.
Внутри файла контроллера создаем класс ckdialm, который наследует свойства и методы класса ckdial. В этом классе происходит переопределение метода execAction():
include_once(SYS_BASE_PATH.'main/classes/ckdial.class.php'); class ckdialm extends ckdial { public function execAction() { global $parser; if(ob_get_length()) ob_clean(); $string = 'This is my string'; if($this->_ckboxes['to_file']['val']) { $parser->toFile($string); } else if ($this->_ckboxes['to_db']['val']) { $date = $parser->utils->toDate(); $parser->conn->execute("INSERT INTO sys_messages(id, infotype, createdon, userid, userip, message, objid, pageid, objtype) VALUES('1000', '1', '$date', 'sys_superadmin', '127.0.0.1', '$string','0','0','0')"); } print('ok'); exit; } }
Внутри метода контроллера необходимо создать объект класса ckdialm:
class test_controllers_index extends common_controller { public function index() { $f = new ckdialm(); $f->ok_mes = $this->parser->gt('savingok', __FILE__); $f->btn_caption = $this->parser->gt('save', __FILE__); $f->addCkbox('to_file', $this->parser->gt('file', __FILE__), 1); $f->addCkbox('to_db', $this->parser->gt('db', __FILE__)); $f->show(); $this->render(); } }