Генератор списков (таблиц)
Версия от 12:06, 17 мая 2018; Kondin (обсуждение | вклад)
Генерация таблицы с помощью SQL-запроса
Подключение шаблонизатора элементов происходит с помощью библиотеки
require_once(SITEBILL_DOCUMENT_ROOT . '/apps/system/lib/system/view/grid_item_renderer.php');
require_once(SITEBILL_DOCUMENT_ROOT . '/apps/system/lib/system/view/grid.php'); $common_grid = new Common_Grid($this); //Создаем экземпляр класса для рендеринга вывода определенных элементов значений в таблице $reserved_object_id_renderer = new Reserved_OBJECT_ID_renderer; //Установка колонок таблицы $common_grid->add_grid_item($this->primary_key); $common_grid->add_grid_item('is_validated'); $common_grid->add_grid_item('start_date'); $common_grid->add_grid_item('end_date'); //Второй аргумент $reserved_object_id_renderer передает экземпляр класса, //отвечающего за генерацию оформления при выводе этого элемента в таблице //Второй аргумент не обязателен $common_grid->add_grid_item('object_id', $reserved_object_id_renderer); //Установка контрольных элементов //Просмотр записи $common_grid->add_grid_control('view'); //Редактирование $common_grid->add_grid_control('edit'); //Удаление $common_grid->add_grid_control('delete'); //устанавливаем параметры для пейджера $common_grid->setPagerParams(array('action' => $this->action, 'page' => $this->getRequestValue('page'), 'object_id' => $object_id, 'order' => $order, 'asc' => $asc, 'per_page' => $this->getConfigValue('common_per_page'))); //Устанавливаем запрос, с помощью которого мы получаем ассив значений для таблицы $common_grid->set_grid_query("select * from " . DB_PREFIX . "_" . $this->table_name . ' WHERE user_id=' . $user_id . ' order by ' . $order . ' ' . $asc); //Теперь в $rs содержиться сгенерированная таблица в виде строки $rs = $common_grid->construct_grid();
Пример реализации рендерера
class Reserved_OBJECT_ID_renderer implements grid_item_renderer { //на входе получаем значение обрабатываемой ячейки function fetch_template($params) { $rs = '<a href="'.SITEBILL_MAIN_URL.'/realty'.$params.'" target="_blank">номер '.$params.' </a>'; return $rs; } }