Example #1
0
/**
 * 生成分页栏,用法:{{bzf_paginator count=$totalCount pageNo=$pageNo pageSize=$pageSize }}
 */
function smarty_helper_function_paginator(array $paramArray, $smarty)
{
    $count = isset($paramArray['count']) ? $paramArray['count'] : 0;
    $pageNo = isset($paramArray['pageNo']) ? $paramArray['pageNo'] : 0;
    $pageSize = isset($paramArray['pageSize']) ? $paramArray['pageSize'] : 10;
    // 不需要分页
    if ($count <= 0 || $count < $pageSize) {
        return '';
    }
    // 修正 page 的值
    $pageNo = $pageNo * $pageSize < $count ? $pageNo : 0;
    $totalPage = ceil($count / $pageSize);
    // 只有一页,不需要分页
    if ($totalPage <= 1) {
        return '';
    }
    // 处理参数
    $currentUrl = RouteHelper::getRequestURL();
    // 去除已有的 page 和 size 参数
    $currentUrl = RouteHelper::removeParam($currentUrl, 'pageNo');
    $currentUrl = RouteHelper::removeParam($currentUrl, 'pageSize');
    // 上一页
    $pagePrevious = '<a data-role="button" class="ui-disabled" data-icon="arrow-l" data-iconpos="left" href="#" data-theme="b">上一页</a>';
    if ($pageNo > 0) {
        $pagePrevious = '<a data-role="button" data-icon="arrow-l" data-iconpos="left" href="' . RouteHelper::addParam($currentUrl, array('pageNo' => $pageNo - 1), true) . '"  data-theme="b" data-direction="reverse" data-transition="flow" >上一页</a>';
    }
    // 下一页
    $pageNext = '<a data-role="button" class="ui-disabled" data-icon="arrow-r" data-iconpos="right" href="#" data-theme="b">下一页</a>';
    if ($pageNo < $totalPage - 1) {
        $pageNext = '<a data-role="button" data-icon="arrow-r" data-iconpos="right" href="' . RouteHelper::addParam($currentUrl, array('pageNo' => $pageNo + 1), true) . '"  data-theme="b" data-transition="flow">下一页</a>';
    }
    return '<div class="ui-grid-a"><div class="ui-block-a">' . $pagePrevious . '</div><div class="ui-block-b">' . $pageNext . '</div></div>';
}