博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel 5.2分页--怎么在一个页面实现两个以上的列表分页,互不影响?
阅读量:5816 次
发布时间:2019-06-18

本文共 2105 字,大约阅读时间需要 7 分钟。

今天就碰到这样的一个问题?想在一个页面里面放两个列表,并且两个列表都可以进行分页。

但是,laravel提供的分页方法很方便,可是两个以上就出问题了,当我点其中一个分页的链接时候,页面上其余的分页跟着切换。

这就是因为每个分页的都在同个页面,并且分页名都是用了默认的‘page’,导致了命名冲突。

在网上找了一个,找到了解决办法,就是自定义设置分页名称。

在Builder.php文件(项目名称/laravel/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php)里面有一个分页的方法paginate()。

/**     * Paginate the given query.     *     * @param  int  $perPage     * @param  array  $columns     * @param  string  $pageName     * @param  int|null  $page     * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator     *     * @throws \InvalidArgumentException     */    public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)    {        $page = $page ?: Paginator::resolveCurrentPage($pageName);        $perPage = $perPage ?: $this->model->getPerPage();        $query = $this->toBase();        $total = $query->getCountForPagination();        $results = $total ? $this->forPage($page, $perPage)->get($columns) : new Collection;        return new LengthAwarePaginator($results, $total, $perPage, $page, [            'path' => Paginator::resolveCurrentPath(),            'pageName' => $pageName,        ]);    }

看了一下它可以传4个参数的:

$perPage = null,

$columns = ['*'],

$pageName = 'page',

$page = null

在设置分页方法的时候传入自定分页变量名,格式为  paginate(3,  ['*'],  'spage');这样问题就解决了,可以在同一个页面上实现多个分页。

但是,你以为ok了么?nonono...

新发现的问题是:当你点击其中一个分页链接的时候,它是实现了页面的跳转,但是,它没问题,其他的分页回跳回首页,也就是说地址栏的分页变量只有一个,你一点跳转,页面跳转,其他的分页就没了,默认为首页去了。

看了一下文档分页这块,里面有个添加参数到分页链接的appends方法。

比如:

 

 ->paginate(2, ['*'], 'fpage');  
{
!! $first->appends(['spage' => $second>currentPage() ])->render() !!}
 ->paginate(2, ['*'], 'fpage');
{
!! $second->appends(['fpage' => $first->currentPage() ])->render() !!}

 

这样来个

1、分页first 、second分别自定分页命为:fpage 、spage;

2、

appends(['fpage' => $first->currentPage() ])、
appends(['spage' => $second>currentPage() ])

  各自调用appends方法添加对方的分页变量名,设置值为其对方当前也页码数

3、获取当前页面数的currentPage()方法是跳用分页方法后,获取结果集合后,调用就它就可以获取当前页码数的

最后就成功啦!!!

 

URL: http://localhost:8000/admin?spage=2&fpage=8

可以不互相影响到了。

 

转载于:https://www.cnblogs.com/smallyi/p/6627855.html

你可能感兴趣的文章
windbg调试实例(4)--句柄泄露[转]
查看>>
keepalived工作原理及裂脑
查看>>
ArcGIS 'Oracle Critical Patch Update - October 2014' Connection Issue Patch
查看>>
使用Mirage将Windows XP升级到Windows 7
查看>>
SSH无法启动,报告/var/empty/sshd must be owned by root and not group or world-writable
查看>>
PHP定时器实现每隔几秒运行一次
查看>>
二、操作系统安装-EXTMAIL
查看>>
nagios监控slave(借助脚本)
查看>>
glusterFS与ceph哪个更好些,记些东西
查看>>
Docker指定网桥和指定网桥IP
查看>>
JQury动画
查看>>
docker容器中安装vim 、telnet、ifconfig命令
查看>>
Get Offer 之遇到了阿里女神怎么选?
查看>>
Android实用代码模块集锦
查看>>
谈谈经历公司那些事
查看>>
闲里偷忙的CPU
查看>>
PG数据库升级步骤说明(pg_dumpall和pg_upgrade)
查看>>
HMSET key field value [field value ...]
查看>>
redis-4.0.1安装配置(CentOS 6.6)
查看>>
jboss (wildfly)安装
查看>>