Laravel 5 Pagination按用户输入排序

时间:2015-10-19 03:12:37

标签: php sorting laravel pagination

我希望用户可以选择按升序或降序对分页进行排序。我尝试了下面的代码,但我不知道如何插入所选的值。

index.blade.php

   <select name="orderby" id="orderby">
                <option value="asc">Ascending</option>
                <option value="desc">Descending</option>
            </select>

    {!! $finding_tbl->appends(['sort' => 'here'])->render() !!}

这是我在PagesController中的索引

 public function index()
    {
        $sort =$_GET['sort'];
        $finding_tbl = findings::orderBy('id', $sort)->paginate(5);
        $finding_tbl->setPath('home');
        return view('pages.index',compact('finding_tbl','sort') );
    }

2 个答案:

答案 0 :(得分:3)

访问get变量的推荐方法(如果使用Laravel 5)是通过依赖注入获取请求的实例。引用documentation

  

通过依赖项获取当前HTTP请求的实例   注入时,你应该键入提示Illuminate \ Http \ Request类   你的控制器构造函数或方法。

在您的情况下,您的控制器看起来像这样。

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

class PagesController extends Controller
{

    public function index(Request $request)
    {
        $sort = $request->input('sort', 'asc');
        $finding_tbl = findings::orderBy('id', $sort)->paginate(5);
        $finding_tbl->setPath('home');
        return view('pages.index',compact('finding_tbl','sort') );
    }
}

一旦有了实例,就可以访问任何输入变量(GET / POST),如下所示:

$sort = $request->input('sort');

如果您需要为变量不存在时定义默认值,则可以将其作为第二个参数传递。

$sort = $request->input('sort', 'asc');

答案 1 :(得分:1)

我使用asc作为排序的默认值。

在您看来:

{!! $finding_tbl->appends(['sort' => Input::get('sort', 'asc')])->render() !!}

在您的控制器中,使用Laravel $request实例或Input facade来获取查询字符串参数而不是全局数组。

$sort = Input::get('sort', 'asc');

(当您使用依赖注入时)

public function index(Request $request) {
    # ...
    $sort = $request->get('sort', 'asc');
    # ...
}