Портал Профессиональных Профессионалов :) Как использовать модуль подстраничной разбивки (Pagination Module)
 
 


Как использовать модуль подстраничной разбивки (Pagination Module)

Оценить
(9 голоса)

Kohana 3.0 пришла к нам с полезным модулем, а именно с модулем, который создан помочь нам в пагинации записей в базе данных. Пагинация представляет собой процесс разбивания базы данных на нумерованные страницы и дает возможность пользователю с помощью ссылок перейти на следующую или предыдущую страницу.

Включение модуля

Модуль пагинации идет в комплекте с Kohana 3.0, но нужно прежде всего его включить перед использованием. Откройте файл"application/bootstrap.php" добавьте в запросы метод Kohana::modules() для внедрения модуля пагинации, как показано в примере ниже.

Kohana::modules(array(
'userguide'     => MODPATH.'userguide',
'database'       => MODPATH.'database',   // Database access
'pagination'      => MODPATH.'pagination',
));


Обычное использование модуля

Следующий контроллер загружает набор записей из базы данных используя конструктор "query" и генерирует пагинационный контроль который позволяет пользователю просматривать страницу за страницей благодаря записям в базе данных.

 public function action_page()
{
// Определите отображение шаблона и привяжите к переменным. $this->template->content = View::factory('page/list')
->bind('results', $results)
->bind('page_links', $page_links);

// Определите точное число записей в базе.
$count = DB::select(DB::expr('COUNT(*) AS mycount'))->from('users')->execute('alternate')->get('mycount');

// Создайте экземпляр класса Pagination и установите значения
$pagination = Pagination::factory(array(
'total_items'    => $count,
'items_per_page' => 20,
));

// Рагрузите специальные исходы для текущей страницы
$results = DB::select()->from('users')
->order_by('id','ASC')
->limit($pagination->items_per_page)
->offset($pagination->offset)->execute();

// Визуализируйте пагинационные ссылки
$page_links = $pagination->render();
}

Подсказка: $pagination→offset поддерживается v3.0.2


Расширенное использование

Вы можете настроить то, как ваш класс будет функционировать и визуализировать ссылки изменением конфигурации при создании экземпляра класса. Рассмотрите следующий пример.

$pagination = Pagination::factory(array(
'current_page'   => array('source' => 'query_string', 'key' => 'p'),
'total_items'    => $count,
'items_per_page' => 40,
'view'           => 'pagination/page_links',
'auto_hide'      => FALSE,
));

Использование файла конфигурации

Класс пагинации использует файл конфига для определения стандартных настроек. Настройки конфига устанавливаются во время создания нового экземпляра класса.

Для создания собственного конфиг файла, скопируйте существующий конфиг файл из "modules/pagination/config/pagination.php" в "application/config/pagination.php"

Вот пример настроенного файла конфигурации.

return array( 
'default' => array(
'current_page'   => array('source' => 'query_string', 'key' => 'p'),
'total_items'    => 0,
'items_per_page' => 40,
'view'           => 'pagination/pretty',
'auto_hide'      => FALSE,
),
);


Объяснение установок конфига

•    current_page array() : устанавливает массив, который определяет источник и ключ для данной страницы. Источник может быть так же роутом или query_string, а ключ может быть любой строкой.
Если источник = роут, тогда класс пагинации будет искать ключ на данном роуте.
Если источник = query_string тогда класс пагинации будет искать ключ в данной query строке
•    total_items int : Должно быть указанно точное кол-во объектов, которые выводятся на странице. Это единственное значение в конфиге, которое приходится вводить каждый раз при создании экземпляра.
•    items_per_page int : кол-во объектов, которые выводятся на кждой странице
•    view string : Это файл отображения, который нужен для визуализации ссылок.
•    auto_hide boolean : Если значение "true", метод render() method не будет ничего выводить если общее кол-во страниц меньше или равно 1.

Антон Панков

Антон Панков

Программист-разработчик.

Сайт: wis-art.com E-mail: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
Еще в этом блоге: « Предыдущая запись


Защитный код
Обновить