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

#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)) !!}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值