2016-07-14 86 views
0

我有一個laravel 5應用程序,其中我試圖對特定結果(結果數組而不是集合)進行分頁。 這是我的代碼:Laravel 5分頁鏈接

$paginator = new LengthAwarePaginator(
$l_aResponse['body'], 
count($l_aResponse['body']), 
'2', 
Paginator::resolveCurrentPage(), 
['path' => Paginator::resolveCurrentPath()] 
); 
return str_replace('/?', '?', $paginator->render()); 

我的問題是:是否有修改其中的「頁」參數中的URL頁面設置的方式呢? EG:我不想要這種格式:http://localsite/articles?page=3但我想要http://localsite/articles/3

我會感謝任何答案。謝謝!

+0

這是在AbstractPaginator類的url()方法中硬編碼的。看看這裏,如果你渴望做到這一點:http://stackoverflow.com/a/22442404/3399676 – ClearBoth

回答

0

的LengthAwarePaginator類的__construct()函數有幾個參數:

  • $項
  • $總
  • $ perPage
  • $當前頁= NULL
  • 數組$選項= []

正如你所看到的fou rth參數代表當前頁面。

因此,您可以使用從url的最後一個參數檢索到的自定義期望當前頁面。一個例子是:

// http://localsite/articles/3 

$currentPage = ... // Get parameter from url 

$paginator = new LengthAwarePaginator(
    $l_aResponse['body'], 
    count($l_aResponse['body']), 
    '2', 
    $currentPage, // Current page as fourth parameter 
    ['path' => Paginator::resolveCurrentPath()] 
); 

return str_replace('/?', '?', $paginator->render()); 

沒有測試過這個。希望它有助於:)

+0

謝謝你的解決方案!但是,這不會允許我們修改分頁鏈接,並且鏈接在URL中仍然有?page = 1等等。我想通過某種參數或某些參數去掉它,並且我不想通過JS或其他方法來干涉和修改這些鏈接。 – shAkur

+0

我已經認爲會發生。也許你應該玩''path'=> Paginator :: resolveCurrentPath()'。或者你可以創建一個新的paginator類來擴展當前的'LenfthAwarePaginator'類並覆蓋一些像render()這樣的方法。 –