Laravel, Как сохранить флажки фильтра при использовании нумерации страниц - PullRequest
0 голосов
/ 21 сентября 2019

Я использую флажки для результатов фильтрации, все отлично работает, но когда я нажимаю на следующую страницу результатов после фильтрации, флажки не проверяются, в URL-ссылке есть переменные, но я не знаю, как сохранитьте же флажки сохраняют статус, надеюсь, вы поняли, о чем я, заранее спасибо

контроллер:

 public function getHotelsByCity(Request $request,$countryID, $cityFilter = [],$starFilter = [])

{

    $cityArray = array();
    $starArray = array();
  $datacity = json_decode($request->input('cityIDs'));
  $datastar = json_decode($request->input('starIDs'));
 if ((!empty($datacity)) OR (!empty($datastar)))
 {

 if(count($datacity)>0 or count($datastar)> 0)
    {
        foreach($datacity as $val)
        {
            $cityArray[] = $val;
        }
        foreach($datastar as $val)
        {
            $starArray[] = $val;
        }

    $cityfilter = implode($cityArray,',');
   $starfilter = implode($starArray,',');

    $hotel = Hotel::getHotelByCitiesArchive($this->language,$countryID,$cityArray,$starArray);

    $country = Country::findOrFail($countryID);
     $title=$country->title;

    //pagination links

     $hotel->setPath('/city-hotels/'.$title.'/'.$countryID.'/'.$cityfilter.'/'.$starfilter);
    return response()->view('hotels.content', compact('hotel'));
    }    
    }
    /*If didnt select any filters*/

    else
   {

    $hotel = Hotel::getHotelArchive($countryID);   
   $country = Country::findOrFail($countryID);
    $title=$country->title;
        //pagination links 
   $hotel->setPath('/hotels/'.$title.'/'.$countryID);

   return response()->view('hotels.content', compact('hotel'));

  }   
   }

контроллер пагинации:

 public function archiveCity($title,$countryID,$cityfilter,$starfilter)
 {

    $citiesArray =  explode(',',$cityfilter);

    $starsArray =  explode(',',$starfilter);


    $hotel = Hotel::getHotelByCitiesArchive($this->language,$countryID,$citiesArray,$starsArray);
    //pagination links    
   $hotel->setPath('/city-hotels/'.$title.'/'.$countryID.'/'.$cityfilter.'/'.$starfilter);

    $country = Country::findOrFail($countryID);

    $city = Hotel::getHotelCities($countryID);

    $star = Hotel::getStars($countryID);


    return view('hotels.archive',compact('hotel','country','star','city'));

     }

jquery:

  $('input[name="cityfilter[]"]').change(function(event){

           event.preventDefault();
   cityFilter = $(".cityCheckbox:checked").map(function(){
    return $(this).val();
     }).get();

  starFilter = $(".starCheckbox:checked").map(function(){
      return $(this).val();
     }).get(); 


     //console.log(locationUrl);
      var starArray = [];
      var cityArray = [];
       var cityString = JSON.stringify(cityFilter);
      var starString = JSON.stringify(starFilter);

    var starVar = (typeof locationUrl[6] === 'undefined')? '': locationUrl[6];

     var urlCall = '/getHotelByCity/'+locationUrl[5]+'/'+starVar;

     console.log(urlCall);

      var loadingSection = 'result';
     //call ajax
     makeAjaxCall(urlCall,cityString,starString,loadingSection);
      });   




        /*Stars*/
     $('input[name="starFilter[]"]').change(function(event){
           event.preventDefault();
      cityFilter = $(".cityCheckbox:checked").map(function(){
    return $(this).val();
     }).get();

     starFilter = $(".starCheckbox:checked").map(function(){
    return $(this).val();
    }).get(); 


     //console.log(locationUrl);
     var starArray = [];
     var cityArray = [];
      var cityString = JSON.stringify(cityFilter);
     var starString = JSON.stringify(starFilter);

    var starVar = (typeof locationUrl[6] === 'undefined')? '': locationUrl[6];

       var urlCall = '/getHotelByCity/'+locationUrl[5]+'/'+starVar;

       console.log(urlCall);

      var loadingSection = 'result';
       //call ajax
      makeAjaxCall(urlCall,cityString,starString,loadingSection);
       }); 

Клинок

  <div class="dash-listing-heading">

   @if(Request::segments()[0] == 'hotels' and isset(Request::segments()[3]))
                  @php
                  $cityArray = explode(',',Request::segments()[3]);
                  @endphp
              @elseif(Request::segments()[0] == 'city-hotels' and isset(Request::segments()[4]))
                  @php
                  $cityArray = explode(',',Request::segments()[4]);
                  @endphp
              @else
                  @php
                  $cityArray = [];
                  @endphp
              @endif                            




        @if(count($city)>0)
                @foreach($city as $item)

      <div class="custom-radio">
     <input type="checkbox"  class="cityCheckbox" name="cityfilter[]" id="cityfilter" value="{{$item->id}}">


    <label for="radio02"><span></span>{{ $item->ct_title }}</label>
    </div>

   @endforeach
  @endif  
  </div>


   <!-- End According to City -->



    <!-- According to Star -->


    <div class="dash-listing-heading">

       @if(Request::segments()[0] == 'hotels' and isset(Request::segments()[3]))
                                @php
                                $starArray = explode(',',Request::segments()[3]);
                                @endphp
                             @elseif(Request::segments()[0] == 'city-hotels' and isset(Request::segments()[4]))
                                @php
                                $starArray = explode(',',Request::segments()[4]);
                                @endphp
                            @else
                                @php
                                $starArray = [];
                                @endphp
                            @endif                           

          @if(count($star)>0)
                @foreach($star as $item)

  <div class="custom-radio">
  <input type="checkbox"  class="starCheckbox" name="starFilter[]" id="starFilter" value="     {{$item->star}}">


 <label for="radio02"><span></span>{{ $item->star }} </label>
    </div>


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