zoukankan      html  css  js  c++  java
  • Laravel 5.2分页--怎么在一个页面实现两个以上的列表分页,互不影响?

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

    但是,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 IlluminateContractsPaginationLengthAwarePaginator
         *
         * @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');
    <div class="text-center"> {!! $first->appends(['spage' => $second>currentPage() ])->render() !!} </div>  ->paginate(2, ['*'], 'fpage'); <div class="text-center"> {!! $second->appends(['fpage' => $first->currentPage() ])->render() !!} </div>

    这样来个

    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

    可以不互相影响到了。

  • 相关阅读:
    二进制文件
    Python的特殊成员
    中标麒麟Linux7 如何关闭广播消息
    双重循环输出
    输出星期数
    九九乘法表
    打印菱形
    加法表
    求100以内所有偶数和
    猜大小
  • 原文地址:https://www.cnblogs.com/smallyi/p/6627855.html
Copyright © 2011-2022 走看看