Я использую флажки для результатов фильтрации, все отлично работает, но когда я нажимаю на следующую страницу результатов после фильтрации, флажки не проверяются, в 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>