Laravel 5分页排序从用户输入


Laravel 5 Pagination sort by from user input

我想为用户提供一个按升序或降序排序分页的选项。我尝试了下面的代码,但我不知道如何插入选定的值。

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') );
    }

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

通过依赖项获取当前HTTP请求的实例注入时,你应该键入提示照亮'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');

我使用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');
    # ...
}