2016-05-29 43 views
1

在laravel 5.2中,我有一個分頁的模型表。Laravel - 刀片視圖中的分頁模型排序鏈接

@CityController

public function index(Request $request){ 
     $cities = City::orderBy('name'); 
     return view('pages.city.index', ["cities" => $cities ->paginate(25)]); 
    } 

這工作得很好,但是當我試圖解決葉片視圖內的結果不起作用。

@ index.blade.php

<table> 
    <thead> 
    <tr class="sui-columnheader"> 
     <th class="sui-headercell" data-field="Id"> 
     <a href="{!! $cities->appends(['sort' => 'id'])->links() !!}">Id</a> 
     </th> 
</thead> 
<tbody class="list"> 
    @foreach ($cities as $city) 
    <tr class="sui-row"> 
     <td class="sui-cell id">{!! $city->id !!}</td> 
    </tr> 
</tbody> 
</table> 

當我點擊排序按鈕只是重新加載頁面,但不應用排序。

是因爲「orderBy」子句? 如何讓它工作並默認按名稱排序? 我錯過了什麼嗎?

+0

嘗試添加「asc」或「desc」命令,例如像這樣$ cities = City :: orderBy('name','asc'); –

+0

@ Diego182沒有變化。 –

+0

嘗試更改 - > links()TO - > render() - https://laravel.com/docs/5.1/pagination –

回答

2

也許是這樣的。你會想確保你限制什麼可以傳遞給那個orderBy。類似「...something?sort=blah」的URL會導致orderBy('blah'),您的表沒有,這將導致數據庫錯誤。

public function index(Request $request) 
{ 
    $cities = City::orderBy($request->input('sort', 'name'))->paginate(25); 
    return view('pages.city.index', ['cities' => $cities]); 
} 

{{ $cities->appends(Request::query())->render() }} 

只是給你一個功能的例子,但你必須根據自己的規則進行調整。

appends只是允許您繼續基於當前的排序分頁,通過分頁鏈接的查詢字符串傳遞排序選項。

更新:

使用您的例子,其中有一個默認的,但想象有可能比單純的1等領域更多的排序:

$sort = trim($request->input('sort')); 
// if it is in the acceptable array use it, otherwise default to 'name' 
$sort = in_array($sort, ['id', ...]) ? $sort : 'name'; 
$cities = City::orderBy($sort)->paginate(25); 

<table> 
    <tr> 
     <th><a href="{{ Request::fullUrlWithQuery(['sort' => 'id']) }}">ID</a></th> 
     <th><a href="{{ Request::url() }}">NAME</a></th> 
     ... 
    </tr> 
    @foreach ($cities as $city) 
    <tr> 
     <td>{{ $city->id }}</td> 
     <td>{{ $city->name }}</td> 
     ... 
    </tr> 
    @endforeach 
... 
{{ $cities->appends(Request::query())->render() }} 

只是一個例子,你可以做這是你想要的。

+0

我只是意識到,當我點擊排序鏈接時url不會改變。它應該改變嗎? –

+0

什麼樣的鏈接? – lagbox

+0

Id