gpt4 book ai didi

php - Laravel - Blade View 中的分页模型排序链接

转载 作者:行者123 更新时间:2023-12-02 04:09:27 29 4
gpt4 key购买 nike

在 laravel 5.2 中,我有一个模型的分页表。

@CityController

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

这工作正常,但是当我尝试对 Blade View 内的结果进行排序时不起作用。

@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”子句吗?我怎样才能让它工作并默认按名称排序?我错过了什么吗?

最佳答案

也许是这样的。您需要确保限制可以传递给该 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() }}

仅举一个例子,您可以按照自己的意愿进行操作。

关于php - Laravel - Blade View 中的分页模型排序链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37515601/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com