2018-05-20 18:29 阅读 159


I have a filter functionality with pagination. Filter is working initially. When I click on pagination next button result is not showing based on filter.

eg: I have three countries in filter box. I chosen two then click on filter button then result is showing correct on first page but When I click on pagination next button all three countries result is showing not appending filter.

Thank you any help would be appreciated

Framework: laravel 5.5

Database: MongoDB


Route::match(['get', 'post'], '/search', 'SearchController@index')->name('search');


public function index(SearchRequest $request)
        $data = $request->all();
        $cabin = Cabin::select('_id', 'name', 'country', 'region', 'interior', 'sleeping_place', 'height', 'other_details', 'interior')
            ->where('is_delete', 0)
            ->where('other_cabin', "0");

            $cabin->where('name', $request->cabinname);

            $cabin->whereIn('country', $data['country']);

            $cabin->whereIn('region', $data['region']);

        $cabinSearchResult = $cabin->simplePaginate(5);

        return view('searchResult', ['cabinSearchResult' => $cabinSearchResult]);


<form action="{{ route('search') }}" method="POST" class="navbar-form navbar-left" id="search-nav-home">

   {{ csrf_field() }}

    <div class="form-group navbar-form navbar-left" id="prefetch">
         <input type="text" class="form-control-home typeahead" name="cabinname" id="cabinname" placeholder="Search Cabin">

     <ul class="nav navbar-nav" id="filter-home">

            <li class="dropdown">
               <!-- Dropdown in Filter -->
               <a href="#" class="dropdown-toggle dropdown-toggle-home" data-toggle="dropdown">Country <span class="caret"></span></a>
                <ul class="dropdown-menu dropdown-menu-home">
                   @foreach($services->country() as $land)
                     <li class="check-it-list-home"><input type="checkbox" class="check-it-home" name="country[]" value="{{ $land->name }}"> {{ $land->name }}</li>

             <li class="dropdown">

              <a href="#" class="dropdown-toggle dropdown-toggle-home" data-toggle="dropdown">Region<span class="caret"></span></a>
                 <ul class="dropdown-menu dropdown-menu-home drop-height">
                    @foreach($services->regions() as $region)
                    <li class="check-it-list-home"><input type="checkbox" name="region[]" value="{{ $region->name }}" class="check-it-home"> {{ $region->name }}



          <div class="form-group navbar-form navbar-right" id="navbar-right-filter-home">
          <button type="submit" class="btn btn-default-home btn-filter-home">Filter Cabins</button>

enter image description here

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    drrvnbwle80177811 drrvnbwle80177811 2018-05-21 11:12

    In the result View you may need to append the query link to the generated paginate link:

    First in your controller, send the result of the search to the view e.g.:

     return view('searchResult', ['cabinSearchResult' => $cabinSearchResult, 'next_query' => $data]);

    Then in your View, use appends and link() method on $searchResult where you display the paginated link instead of only link() or render(), like this:

    {{ $searchResult->appends($next_query)->links() }}

    This should generate links with the query string that contains your old search query on all the pages generated.

    Read more about pagination in Laravel Docs

    点赞 评论 复制链接分享