我在 Kohana 3.2 中找到了很多关于分页的信息,但大部分都分散在论坛评论和博客文章中,没有一个完整的来源可供参考。
(注意:我打算自己回答这个问题)
我在 Kohana 3.2 中找到了很多关于分页的信息,但大部分都分散在论坛评论和博客文章中,没有一个完整的来源可供参考。
(注意:我打算自己回答这个问题)
这对我有用:
在 bootstrap.php 中添加模块:
Kohana::modules(array(
// ... other modules ...
'pagination' => MODPATH.'pagination'
));
将配置文件从 modules/pagination/config/pagination.php 复制到 application/config/pagination.php。
将以下操作添加到您的控制器:
public function action_index() {
// Go to first page by default
$this->request->redirect('yourcontroller/page/?page=1');
}
public function action_page() {
$orm = orm::factory('your_orm');
$pagination = Pagination::factory(array(
'total_items' => $orm->count_all(),
'items_per_page' => 20,
)
);
// Pass controller and action names explicitly to $pagination object
$pagination->route_params(array('controller' => $this->request->controller(), 'action' => $this->request->action()));
// Get data
$data = $orm->offset($pagination->offset)->limit($pagination->items_per_page)->find_all()->as_array();
// Pass data and validation object to view
echo View::factory('yourview/page', array('data' => $data, 'pagination' => $pagination));
}
如下创建您的视图/页面:
<?php
foreach($data as $item) {
// ...put code to list items here
}
// Show links
echo $pagination;
根据需要修改 application/config/pagination.php。当页面列表太大时,我必须将'view'
参数更改为显示省略号 (...),这与默认列出所有页面而不考虑长度的默认设置不同。'pagination/floating'
'pagination/basic'
分页最初在 Kohana 3.2 中不工作/不支持。幸运的是,有人更新了模块,您可以在https://github.com/kloopko/kohana-pagination获取代码