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 \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');
<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

可以不互相影響到了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM