Php Laravel 4:分页和排序标头
我在Laravel分页和标题排序方面有问题,让我向您展示一下我所拥有的 我当前使用的页面是“admin/admins”,其中有分页和标题 1) 管理员控制器代码:Php Laravel 4:分页和排序标头,php,laravel,laravel-4,Php,Laravel,Laravel 4,我在Laravel分页和标题排序方面有问题,让我向您展示一下我所拥有的 我当前使用的页面是“admin/admins”,其中有分页和标题 1) 管理员控制器代码: // get for admin/admins page // page to list all the Admin users public function getAdmins($sort= NULL , $sort_dir = NULL) { // CACHE SORTING INPUTS $allowed =
// get for admin/admins page
// page to list all the Admin users
public function getAdmins($sort= NULL , $sort_dir = NULL) {
// CACHE SORTING INPUTS
$allowed = array('first_name', 'last_name', 'email', 'activated', 'created_at'); // add allowable columns to search on
$sort = in_array($sort, $allowed) ? $sort : 'first_name'; // if user type in the url a column that doesn't exist app will default to first_name
// header links setup.
$params = Request::except(['sort','sort_dir']);
$sort_dir = ($sort_dir == 'asc') ? 'desc' : 'asc';
$i = 0 ;
foreach ($allowed as $allow) {
$attributes[$i] = array_merge(['sort' => $allowed[$i], 'sort_dir' => $sort_dir], $params);
$i++;
}
// select all admins Group = 1
$admins = DB::table('users')
->join('users_roles', 'users.id', '=', 'users_roles.user_id')
->where('users_roles.role_id', '=' ,0)
->orderBy($sort, $sort_dir)
->paginate($this->perpage);
// check for actions
if (!is_null(Input::get('action'))) {
$action = Input::get('action');
if ($action == "add") {
$this->layout->content = View::make('admin.admins-add');
}
} else {
// get current counter admin counts
$counter = $admins->getFrom();
View::share('counter', $counter);
View::share('attributes', $attributes);
// share admin with template
View::share('admins', $admins);
$this->layout->content = View::make('admin.admins');
}
}
2) route.php
:
Route::controller('admin', 'AdminController');
3) view/admin/admins.blade.php
(生成标题链接):
这看起来不错,但问题是当您进入第2页时,生成的链接如下所示:
<tr>
<th><a href="admin/admins/first_name/asc/2">First Name</a></th>
<th><a href="admin/admins/last_name/asc/2">Last Name</a></th>
<th><a href="admin/admins/email/asc/2">Email</a></th>
<th><a href="admin/admins/activated/asc/2">Activated</a></th>
<th><a href="admin/admins/created_at/asc/2">Created</a></th>
<th>Actions</th>
</tr>
行动
当我点击其中任何一个页面时,它会将我带到第一页,而分页不起作用。我怎样才能解决这个问题?分页类没有干净的URL,如果我将我的URL设置为如下所示,这是唯一可行的方法:
<tr>
<th><a href="admin/admins/first_name/asc/?page=2">First Name</a></th>
<th><a href="admin/admins/last_name/asc/?page=2">Last Name</a></th>
<th><a href="admin/admins/email/asc/?page=2">Email</a></th>
<th><a href="admin/admins/activated/asc/?page=2">Activated</a></th>
<th><a href="admin/admins/created_at/asc/?page=2">Created</a></th>
<th>Actions</th>
</tr>
行动
也许到时候你已经得到了解决方案,但我做了以下几点:
在控制器中:
$sort = Input::get('sort')=== '' ? 'id': Input::get('sort');
$sort_dir = Input::get('sort_dir') === 'asc' ? 'asc' : 'desc';
在视图/admin/admins.blade.php中,您可以手动创建如下链接:
首先,定义$page
@if($page = $admins->getCurrentPage() )@endif
然后
@如果($sort=='first\u name'&&$sort\u dir=='asc')
@否则
@恩迪夫
一定是另一种方式,但这对我很有效 必须在链接到操作中添加数组$attributes,而不仅仅是单个元素。这就是为什么它给了你错误的链接你能给我一个代码吗,当你说append你的意思是什么?你不明白我,我只做了一个元素来获取列名:first_name,last_name等等。有人能帮上忙吗?
$sort = Input::get('sort')=== '' ? 'id': Input::get('sort');
$sort_dir = Input::get('sort_dir') === 'asc' ? 'asc' : 'desc';
@if($page = $admins->getCurrentPage() )@endif
<th>
@if ($sort == 'first_name' && $sort_dir == 'asc')
<a href="{{ Request::url() }}?page={{$page}}&sort_dir=desc&sort={{$sort}}">First Name</a>
@else
<a href="{{ Request::url() }}?page={{$page}}&sort_dir=asc&sort={{$sort}}">First Name</a>
@endif
</th>