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

Laravel5.2 手动分页以及自定义样式

2016-10-26 12:30 375 查看
#vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:480

return new LengthAwarePaginator($this->get($columns), $total, $perPage, $page, [
'path' => Paginator::resolveCurrentPath(),
'pageName' => $pageName,
]);

可以发现了分页的源码了  拿出来直接使用
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
use Illuminate\Http\Request;
//演示分页 //输出分页{{ $paginator->render() }}
function userList(Request $request) {
$users = [
['username'=>'zhangsan', 'age'=>26],
['username'=>'lisi', 'age'=>23],
['username'=>'wangwu', 'age'=>62],
['username'=>'zhaoliu', 'age'=>46],
['username'=>'wangmazi', 'age'=>25],
['username'=>'lanzi', 'age'=>24],
['username'=>'pangzi', 'age'=>21]
];

$perPage = 3;
if ($request->has('page')) {
$current_page = $request->input('page');
$current_page = $current_page <= 0 ? 1 :$current_page;
} else {
$current_page = 1;
}

$item = array_slice($users, ($current_page-1)*$perPage, $perPage); //按分页取数据
$total = count($users);
//也可以这样
//$paginator=new LengthAwarePaginator($item, $total, $perPage);
// $paginator=$paginator->setPath(route('admin.wxmenu.index'));
$paginator =new LengthAwarePaginator($item, $total, $perPage, $current_page, [
'path' => Paginator::resolveCurrentPath(),  //设定个要分页的url地址。也可以手动通过 $paginator ->setPath(‘路径’) 设置
'pageName' => 'page',
]);

$userlist = $paginator->toArray()['data'];

return view('lawyer.index', compact('userlist', 'paginator'));
}

2.很多时候需要自定义html。简单的查看下源码发现:

if (is_null($presenter) && static::$presenterResolver) {
$presenter = call_user_func(static::$presenterResolver, $this);
}


那么我们就可以自定义一个 boolawuiThreePresenter 类,继承自BootstrapThreePresenter。就可以自定义样式了

<?php

namespace App\Http\Controllers\Common;

class boolawuiThreePresenter extends \Illuminate\Pagination\BootstrapThreePresenter
{
public function render()
{
if ($this->hasPages()) {
return sprintf(
'<ul class="am-pagination am-pagination-centered">%s %s %s</ul>',
$this->getPreviousButton(),
$this->getLinks(),
$this->getNextButton()
);
}

return '';
}

/**
* Get HTML wrapper for disabled text.
*
* @param string $text
*
* @return string
*/
protected function getDisabledTextWrapper($text)
{
return '<li class="am-disabled"><span>'.$text.'</span></li>';
}

/**
* Get HTML wrapper for active text.
*
* @param string $text
*
* @return string
*/
protected function getActivePageWrapper($text)
{
return '<li class="am-active"><span>'.$text.'</span></li>';
}
}


然后使用的时候只需要传入这个类就行了
{!! $paginator
->appends(['sort' => 'votes'])//传参数
->render(new App\Http\Controllers\Common\boolawuiThreePresenter($paginator)) !!}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: