本站停止维护,已转移至laravel学习网;欢迎大家移步访问!

深入解读laravel5实战中带参数分页,自定义分页以及一系列参数用法详解

laravel其实实行分页其实特别轻松,但是对于没有深入了解的人来说,可能有些点你关注不到,那么,我们一起来研究一下常用到的laravel分页

有几种方法来分页对象。最简单的是在搜索构建器使用 paginate 方法或 Eloquent 模型。

$tests = DB::table('tests')->where('id','>',5)->paginate(5);

其实,你对数据库可以进行任何查询操作,取值的时候你用paginate就可以了,数字代表的是每页个数,

<div class="container">
    @forelse($tests as $test)
        {{ $test->id }}
    @empty
        没有记录
    @endforelse
</div>
<?php echo $tests->render(); ?>

这样就可以正常使用了,他会对目前的情况进行判断,你不需要担心其他的操作,相当省心

当我们需要进行多条件分页的时候,我们先正常分页,然后再把条件回传就可以了:

public function test(Request $request)
    {
        $condition=$request->all();
         // 根据条件查找数据
        $test=DB::table('tests')->where('id',$request->id)->paginate(5);
        // 把搜索参数回传
        return view('test',['tests'=>$tests,'condition'=>$condition]);
    }

然后我们怎么带参数分页呢?

{!! $tests->appends($condition)->render() !!}

这样再看看,是不是分页成功了?

好的,默认的上一页下一页是不是有点丑?在/vendor/laravel/framework/src/Illuminate/Pagination/BootstrapThreeNextPreviousButtonRendererTrait.php改成这样就可以了

public function getPreviousButton($text = '上一页')
    {
        // If the current page is less than or equal to one, it means we can't go any
        // further back in the pages, so we will render a disabled previous button
        // when that is the case. Otherwise, we will give it an active "status".
        if ($this->paginator->currentPage() <= 1) {
            return $this->getDisabledTextWrapper($text);
        }
        $url = $this->paginator->url(
            $this->paginator->currentPage() - 1
        );
        return $this->getPageLinkWrapper($url, $text, 'prev');
    }
    /**
     * Get the next page pagination element.
     *
     * @param  string  $text
     * @return string
     */
    public function getNextButton($text = '下一页')
    {
        // If the current page is greater than or equal to the last page, it means we
        // can't go any further into the pages, as we're already on this last page
        // that is available, so we will make it the "next" link style disabled.
        if (! $this->paginator->hasMorePages()) {
            return $this->getDisabledTextWrapper($text);
        }
        $url = $this->paginator->url($this->paginator->currentPage() + 1);
        return $this->getPageLinkWrapper($url, $text, 'next');
    }

屏幕快照-2016-08-26-下午10.42.06.png

当然你可以自定义,好的,有些时候我们需要知道总页数,总数据数等,我总结了,方便大家使用:

$tests->count()   //当前页显示个数
$tests->currentPage() //当前页书
$tests->hasMorePages()  //判断是不是还有更多页,比如最后一页她就不显示,不然就显示1
$tests->lastPage() //最后一页,也是总页数(在 simplePaginate 中无法使用)
$tests->nextPageUrl() //下一页的连接
$tests->perPage()  //定义的每页个数
$tests->previousPageUrl() //上一页连接
$tests->total() //总数据量,就是总记录数(在 simplePaginate 中无法使用)
$tests->url($page)  //$page是你想跳转到的页数,你也可以同时用获取总页数,然后用url定义到最后一页是吧

其他的方法这里先不说了,后续方法继续在评论区跟新!

转载请注明 :一沙网络原文出处:http://bbs.earnp.com/article/141
问题交流群 :562864481
4
打赏
发布时间 :2016-08-26 23:06:19
分享

0 个评论

    还没有评论,感觉来抢沙发吧!

要回复文章请先登录注册