tp5之分页简例(含路由补充)

浏览:1553 发布日期:2016/05/10 分类:ThinkPHP5专区 关键字: tp5 page route
分页路由补充
1.配置'base_url'=>'',2.路由'xxx/:page'=>'home/index/index',//xxx可自行替换
//'xxx/:page/:id'=>'home/index/index',//可以多个参数
//'xxx/:page/:id/:year'=>'home/index/index/name/tp5',//可以有额外参数
3.Paginator.php里url()约108行if (!empty($parameters)) {
    $url .= '?' . urldecode(http_build_query($parameters, null, '&'));
}
改为if (!empty($parameters)) {
    if (stristr($url, '%') !== false) {//%可更改为能解析的其它字符,但使用的地方都要一致
        $additional_parameter = '';
        foreach ($parameters as $k => $v) {
            if($k=='page'){
                $url=str_replace('%', $v, $url);
                //$url=sprintf($url,$v);另一种方法替换,'path'值写法'xxx/%u' 
                continue;
            }
            $additional_parameter.= '/' . $k . '/' . $v;
        }
        $url = Url::build('/' . $url . $additional_parameter);
    }
    else {
        $url.= '?' . urldecode(http_build_query($parameters, null, '&'));
    }
}
4.paginate()第三参数(数组)设置格式$options = [
    'page' => $当前页, 
    'path' => 'xxx/%'//无论参数多少都与路由一致,只将:page的值改为%(无路由按正常编写)
    //'path' => 'xxx/%/3/2016',其它参数按需求正常设置
    //'query'=>['额外参数1'=>'值1',........],
    //'fragment' => 'a',锚点id
];
5.效果
(多参数,额外参数,锚点等等自行测试url类似server_name/p/2/3/2016/id/4/name/tp5.html#a)<ul class="pagination">
    <li class="disabled"><span>«</span></li>
    <li class="active"><span>1</span></li>
    <li><a href="server_name/xxx/2.html">2</a></li>
    <li><a href="server_name/xxx/3.html">3</a></li>
    <li><a href="server_name/xxx/4.html">4</a></li>
    <li><a href="server_name/xxx/2.html">»</a></li>
</ul>
---------------------------------------------------------------------------------
在老大和同仁的帮助下,更新分页
一.控制器方法(变量名自行改为英文)public function index() {
    $page = input('get.page');
    if (isset($page) && null !== $page) {
        $当前页 = $page;
    }
    else {
        $当前页 = 1;
    }
    $options=[
        'page'=>$当前页,
        'path'=>url('index')
    ];
    $数据= \think\Db::name('A')->paginate(10,false,$options);//默认每页是15条数据
    $view = new \think\View();
    $view->assign('a', $数据);
    return $view->fetch();
}
二.html代码<style>
    .pagination{list-style: none;}
    .pagination li{display: inline-block;padding: 2px 8px}
</style>
{volist name="a" id="vo"}
    {$vo.id}-{$vo.title}<br>
{/volist}
<div>
    {$a->render()}
</div>
--------------------------------------------------------------------------

一.控制器方法(可以封装调用,变量名自行改为英文)public function index() {
    $page = input('get.page');
    if (isset($page) && null !== $page) {
        $当前页 = $_GET['page'];
    } else {
        $当前页 = 1;
    }
    $每页显示行数 = 3;
    $起始页 = $每页显示行数 * ($当前页 - 1);
    $数据 = \think\Db::name('A')->limit($起始页, $每页显示行数)->select();
    $总行数 = \think\Db::name('A')->count('id');
    $bootstrap = new \think\paginator\driver\Bootstrap($数据, $每页显示行数, $当前页, false, $总行数, ['path' => url('index') ]);
    $view = new \think\View();
    $view->assign('a', $数据);
    $view->assign('bootstrap', $bootstrap->render());
    return $view->fetch();
}
二.html代码<style>
    .pagination{list-style: none;}
    .pagination li{display: inline-block;padding: 2px 8px}
</style>
{volist name="a" id="vo"}
    {$vo.id}-{$vo.name}<br>
{/volist}
<div>
    {$bootstrap}
</div>
最佳答案
评论( 相关
后面还有条评论,点击查看>>