我在索引页面上显示结果列表时尝试实现displayPerPage(10,25,50等)。但是,我很难在不替换其他查询字符串的情况下将其附加到网址。
示例:
我有一个用于切换页面的分页器,但是,如果我在第5页上选择并在我的选择下拉列表中选择每页显示10个结果,它将加载结果但从网址中删除页面= 5。如何只是附加displayPerPage而不删除我目前在分页器上的位置。
感谢您的帮助。
我知道可以在不创建自定义分页符的情况下完成它,因为我已经在laravel 4的另一个项目上完成了,但那是一段时间了,我似乎无法弄清楚如何再次这样做。
答案 0 :(得分:0)
假设$ objects是您要分页的项目列表,在您的视图中,您可以添加您的分页器:
{{$objects->appends(request()->query())->links()}}
和您的requestPerPage之类的查询字符串将被携带
答案 1 :(得分:0)
在与这个问题作斗争之后,我在php中编写了一个url解析器帮助函数来查找和替换url之后的某些东西?标志(查询部分)
//for displayPerPage, orderBy and sortBy parse the url and replace with new values
function urlQueryParse($queryToReplace, $newValue){
// extract query from url
$fullUrl = Request::fullUrl();
if(strpos($fullUrl, '?') !== false){
//find everything after the ? in url
$url = substr($fullUrl, strpos($fullUrl, "?") + 1);
// check url to make sure $queryToReplace exists in the url
if(strpos($url, $queryToReplace) !== false) {
// look through the remaining url query and replace whats given to the function
$newUrL = preg_replace('/('. $queryToReplace. '\=)([^&]+)/', $queryToReplace.'='.$newValue, $url);
return Request::url()."?{$newUrL}";
}
// if the ? exists but the queryToReplace is not in the url, then add it to the query string
return Request::url()."?{$url}&{$queryToReplace}={$newValue}";
}
//if the url doesnt have ? sign then simply insert the new value
return Request::url()."?{$queryToReplace}={$newValue}";
}
希望这有助于某人。如果您对如何改进它有任何想法,我愿意接受建议。
P.S。我正在研究Laravel 5.2