【问题标题】:Laravel 5.3 pagination pretty URL for APILaravel 5.3 为 API 提供漂亮的分页 URL
【发布时间】:2017-08-13 18:46:02
【问题描述】:

有没有办法在 Laravel 5.3 中获得一个漂亮的分页 URL?

例如,默认情况下:

搜索关键字为:something new

http://localhost/project/search/something%20new?page=2

{
  "total": 19,
  "per_page": 5,
  "current_page": 1,
  "last_page": 4,
  "next_page_url": "http://localhost/project/search/something%20new?page=2",
  "prev_page_url": null,
  "from": 1,
  "to": 5,
  "data": [
  {
     // result
    }
  ]
}

我想得到什么:

http://localhost/project/search/?page=2

另外,分页应该以这种方式呈现,并且附加到分页应该以这种方式出现。

控制器。

public function search(Request $request)
{
    $search = $request->name;

    $searchValues = preg_split('/\s+/', $search, -1, PREG_SPLIT_NO_EMPTY);

    $result = abcModel::where( function ($q) use ($searchValues) {
        foreach ($searchValues as $value ) {
            $q->orWhere('city', 'like', "%{$value}%");
            $q->orWhere('country', 'like', "%{$value}%");
            $q->orWhere('name', 'like', "%{$value}%");
             } })
        ->orderby('id','desc')
        ->paginate(20);

    return response()->json( $result );
}

路线,

Route::post('search/',array('uses' => 'abcController@search'));

请求和响应在上面..

【问题讨论】:

    标签: php api pagination laravel-5.3


    【解决方案1】:

    您需要切换用于搜索路径的 HTTP 方法,以通过 POST 而不是 GET 发送查询字符串。因此,如果没有发布代码,我假设您的路线设置如下:

    Route::get('project/search/{query}', 'ExampleController@search');
    

    这会变成类似的东西

    Route::post('project/search/', 'ExampleController@search');
    

    只要您使用传入控制器的 Request 对象来处理实际数据,并在 POST 正文中保持与 GET 查询参数相同的名称,则应该对您的代码进行最少的修改(如果需要)全部。

    您还可以进一步处理 POST 正文中的 page 参数,将您的 URL 保留为 http://localhost/project/search/

    【讨论】:

    • 您更新的路由仍然在 URL 中将搜索查询作为 GET 参数。你需要删除它。您的控制器的参数也不正确。您的函数定义应该是public function search(Request $request),并且您使用Request 类的input() 方法检索值。在此处查看 Request 类的文档:laravel.com/docs/5.3/requests
    • 再次查看我更新的控制器和路由,以及它的工作原理。
    猜你喜欢
    • 2014-01-25
    • 2019-06-20
    • 1970-01-01
    • 2016-01-19
    • 2015-02-25
    • 2017-06-06
    • 1970-01-01
    • 2016-12-31
    • 2019-02-08
    相关资源
    最近更新 更多