Laravel分页在搜索页面中不起作用

时间:2016-01-22 12:10:25

标签: laravel pagination laravel-5.1

我正在使用IBOutlet。这是我的代码,

routes.php文件

laravel 5.1

UsersController.php

Route::any('users/search', array('as' => 'adminuserssearch', 'uses' => 'UsersController@adminSearch'));

search.blade.php

public function adminSearch(){
    $input = Input::all();
    if(!empty($input)){
        $key = Input::get('key');
        $users =  User::where('users.name', 'like', '%'.$key.'%')
         ->orWhere('users.email', 'like', '%'.$key.'%')
         ->paginate(10);

        return view('admin.users.search', ['users' => $users,'tag' =>$key]);
    }
}

当我搜索用户时,网址就像,

{!! $users->render() !!} //Use this code for display pagination.

但是当我点击分页链接时,网址就会像

一样
http://myproject/admin/users/search?key=user

http://myproject/admin/users/search/?page=2 部分将从网址中丢失。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

您应该将此参数附加到pagination links

{!! $users->appends(['key' => $tag])->render() !!}

答案 1 :(得分:0)

您可以使用setPath()方法对配置程序网址进行成本计算。

您可以像$users->setPath('custom/url');

一样将其添加到控制器中

答案 2 :(得分:0)

在 Laravel 8 中,通过添加 ->withQueryString() 到 ->paginate(10) e.g

来更改您的 UsersController.php
public function adminSearch(){
$input = Input::all();
if(!empty($input)){
    $key = Input::get('key');
    $users =  User::where('users.name', 'like', '%'.$key.'%')
     ->orWhere('users.email', 'like', '%'.$key.'%')
     ->paginate(10)->withQueryString(); //add withQueryString()

    return view('admin.users.search', ['users' => $users]);
         }
   }

欢迎您:Source

答案 3 :(得分:-3)

对我有用的解决方案:

https://laravel.io/forum/11-15-2016-ho-to-paginate-search-results

公认的解决方案是:

  

在您显示分页的视图中...

{{ $results->appends(Request::except('page'))->links() }}