jsnlib / joomla_pagination
帮助 Joomla! 结构化分页辅助,操作更明确
1.0.2
2018-09-19 05:16 UTC
Requires
- php: >=7.0.0
- jsnlib/ao: >=1.2.0
This package is auto-updated.
Last update: 2024-08-29 05:06:07 UTC
README
帮助 Joomla! 结构化分页辅助,操作更明确。
使用方法
$pagination = new \Jsnlib\Joomla\Pagination($this); $pagination // 每頁多少筆 ->limit(10) // 每頁起始值 ->offset(0) // 未分頁的總數量 ->total(100) // 建立 ->create(function ($joomla, $param) { // 返回分頁的數據列表 return $joomla->model->getAll(new \Jsnlib\Ao ([ 'offset' => $param->offset, 'limit' => $param->limit ])); });
- limit():通常是固定的数量。
- offset():因为换页的关系,通常接收来自 $_GET 参数值。
- total():从 DB 计算出的未分页的数量。
- create():通过 callable 取得根据 limit, offset 取得的实际列表。
其中 limit(), offset(), total() 可以直接赋值数量,也可以使用匿名函数后返回,例如
$pagination->limit(function () { // do something ...... return 5; })
使用示例
这里示例在 controller 建立分页,并传送到 view.html.php,若要在 view.html.php 建立分页也是没有问题的。 administrator/components/com_todolist/controllers/todolist.php
<?php class TodoListControllerTodoList extends JControllerLegacy { public function index() { $pagination = new \Jsnlib\Joomla\Pagination($this); $view = $this->getView('TodoList', 'html'); $view->setLayout('main'); $view->pagination = $pagination // 每頁多少筆 ->limit(10) // 每頁起始值 ->offset($this->post->getInt('limitstart', 0)) // 未分頁的總數量 ->total(function ($joomla) { return $joomla->something_model->getNumAllFilter(); }) // 建立 ->create(function ($joomla, $param) { // 返回分頁的數據列表 return $joomla->something_model->getAllFilter(new \Jsnlib\Ao ([ 'offset' => $param->offset, 'limit' => $param->limit ])); }); $view->main(); } }
输出列表 administrator/components/com_todolist/views/todolist/tmpl/main.php
<?php foreach ($this->pagination->collection as $key => $something): ?> <?=$something->id?> <?php endforeach; ?>
输出分页
<?=$this->pagination->joomlaPagination->getListFooter(); ?>
确保表单的值是否如期设置,因为 Joomla 换页使用 POST 传递与接收,请检查是否能正确 POST
<input type="hidden" name="option" value="務必正確設定如 com_news">
<input type="hidden" name="task" value="務必正確設定如 new.index">