Фильтр не работает, когда я нажимаю на пагинацию в daravel и mongo db - PullRequest
0 голосов
/ 20 мая 2018

У меня есть функциональность фильтра с нумерацией страниц.Фильтр работает изначально.Когда я нажимаю на пагинацию, следующая кнопка не отображается в зависимости от фильтра.

Например: у меня есть три страны в поле фильтра.Я выбрал два, затем нажмите кнопку фильтра, после чего результат будет отображаться правильно на первой странице, но когда я нажму кнопку «Следующая страница», во всех трех странах результат будет отображаться без добавления фильтра.

Спасибо, любая помощь будет оценена

Framework: laravel 5.5

База данных: MongoDB

route.php

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

SearchController.php

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");

        if(isset($request->cabinname)){
            $cabin->where('name', $request->cabinname);
        }

        if(isset($request->country)){
            $cabin->whereIn('country', $data['country']);
        }

        //dd($cabin->count());
        if(isset($request->region)){
            $cabin->whereIn('region', $data['region']);
        }

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

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

search.blade.php

<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">
    </div>

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

         @if($services->country())
            <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>
                   @endforeach
                </ul>
               </li>
          @endif

          @if($services->regions())
             <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 }}

                    </li>
                  @endforeach
                </ul>
               </li>
            @endif

          </ul>

          <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>
  </div>
</form>

enter image description here

1 Ответ

0 голосов
/ 21 мая 2018

В представлении результатов вам может понадобиться добавить ссылку на запрос к сгенерированной ссылке на страницы:

Сначала в вашем контроллере отправьте результат поиска в представление, например:

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

Затем в вашем представлении используйте appends и link() метод для $searchResult, где вы отображаете разбитую на страницы ссылку вместо только link() или render(), например:

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

Thisдолжен генерировать ссылки со строкой запроса, которая содержит ваш старый поисковый запрос на всех сгенерированных страницах.

Подробнее о нумерации страниц в Документы Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...