We can create one hidden form with load all post parameters. get the pagination parameters using jquery. Push pagination parameter value into hidden form. trigger submit action using jquery.
<?php
$form = ActiveForm::begin(['id' => 'pagination_link-form','options' => ['style'=>'display:none']]);
foreach ($_REQUEST as $key => $value) {
echo Html::hiddenInput($key,$value);
}
echo Html::hiddenInput('page','',['id'=>'page']);
echo Html::hiddenInput('per-page','',['id'=>'perpage']);
ActiveForm::end();
$this->registerJs(
'$("document").ready(function(){
var actionurlold = $("#pagination_link-form").attr("action");
function getUrlParameter(pageurl,sParam) {
var sPageURL = pageurl,
sURLVariables = sPageURL.split("&"),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split("=");
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
}
function removeURLParameter(url, parameter) {
//prefer to use l.search if you have a location/link object
var urlparts= url.split("?");
if (urlparts.length>=2) {
var prefix= encodeURIComponent(parameter)+"=";
var pars= urlparts[1].split(/[&;]/g);
//reverse iteration as may be destructive
for (var i= pars.length; i-- > 0;) {
//idiom for string.startsWith
if (pars[i].lastIndexOf(prefix, 0) !== -1) {
pars.splice(i, 1);
}
}
url= urlparts[0]+"?"+pars.join("&");
return url;
} else {
return url;
}
}
$(".pagination a").on("click",function(){
event.preventDefault();
var page = getUrlParameter($(this).attr("href"),"page");
var perpage = getUrlParameter($(this).attr("href"),"per-page");
//$("#pagination_link-form #page").val(page);
//$("#pagination_link-form #perpage").val(perpage);
var actionurl = $("#pagination_link-form").attr("action");
actionurl = removeURLParameter(actionurl, "page");
actionurl = removeURLParameter(actionurl, "per-page");
actionurl = actionurl+"&page="+page+"&per-page="+perpage;
$("#pagination_link-form").attr("action",actionurl);
$("#pagination_link-form")[0].submit();
return false;
});
});'
);
?>