Генератор списков (таблиц)

Материал из CMS Sitebill Wiki
Перейти к: навигация, поиск

Генерация таблицы с помощью 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;
    }

}