您的位置:首页 > 编程语言 > PHP开发

Laravel 手动创建分页器 LengthAwarePaginator

2017-03-10 12:45 3087 查看
1.分页器实例调取:
Illuminate\Pagination\LengthAwarePaginator

use Illuminate\Pagination\Paginator;
use Illuminate\Pagination\LengthAwarePaginator;

2.生成分页数据
$total = $retData->total; //记录总条数
$perPage = PAYMENT_PER_PAGE_NUMBER; //每页的记录数 ( 常量 )

$current_page = $this->params['pageNum']; //
当前页

$path = Paginator::resolveCurrentPath(); // 获取当前的链接"http://localhost/admin/account"

$infoList['retData'] = $retData;

$infoList['paginator'] = new LengthAwarePaginator($retData, $total,$perPage, $current_page, [

    'path' => $path , 
//设定个要分页的url地址。也可以手动通过 $paginator ->setPath(‘路径’) 设置

    'pageName' => 'page',
//链接的参数名 http://localhost/admin/manage?page=2
]);
//分页  (方法里$retData 是要分页的数据,但这里只是暂存,LengthAwarePaginator 不处理这个数据)

3,页面显示
在balde模板页面中输出:

[ ========= 注意:仅有一页数据时,分页按钮是不显示的===========]

{!! $paginator->render() !!}

分页样式 : Bootstrap  class="pagination"





=============================path带多个参数 ==========================
4.path带多个参数
// ************************************
// 分页逻辑
$perPage = 20;
if ($request->has('page')) {

    $current_page = $request->input('page');

    $current_page = $current_page <= 0 ? 1 :$current_page;

else {

    $current_page = 1;

}

//$item = array_slice($result['accountList'], ($current_page-1)*$perPage, $perPage); //按分页取数据

$total = $result['accountdata']['total'];

$path_arr = array();

$com_name = $request->input('com_name'); // 检索条件_公司名称

$com_name = empty($com_name) ? null : trim($com_name);

if (!empty($com_name)) $path_arr['com_name'] = trim($com_name);

$select_group = $request->input('select_group'); // 检索条件

$select_group = empty($select_group) ? null : trim($select_group);

if (!empty($select_group)) $path_arr['select_group'] = trim($select_group);

$path = Paginator::resolveCurrentPath();  // 获取当前的链接"http://localhost/admin/account"

if (count($path_arr) > 0) $path.= '?'.http_build_query($path_arr);// 拼接参数

$paginator =new LengthAwarePaginator($result['accountList'], $total, $perPage, $current_page, [

        'path' => $path,  //设定个要分页的url地址。也可以手动通过 $paginator ->setPath(‘路径’) 设置

        'pageName' => 'page',

    ]);

// ************************************
return view('admin.account.search')->with('retData',$result)->with('paginator',$paginator);

5.注:
http_build_query方法:
生成 url-encoded 之后的请求字符串描述string http_build_query (
array formdata [, string numeric_prefix] )
实例:
<?php 
$data = array('foo', 'bar', 'baz', 'boom', 'cow' => 'milk', 'php' =>'hypertext processor'); 
echo http_build_query($data); 
/* 输出: 
       0=foo&1=bar&2=baz&3=boom&cow=milk&php=hypertext+processor 
*/ 
echo http_build_query($data, 'myvar_'); 
/* 输出: 
       myvar_0=foo&myvar_1=bar&myvar_2=baz&myvar_3=boom&cow=milk&php=hypertext+processor 
*/ 
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息