附加到Laravel的网址

时间:2016-10-17 18:16:44

标签: php laravel laravel-5 laravel-5.2

我在索引页面上显示结果列表时尝试实现displayPerPage(10,25,50等)。但是,我很难在不替换其他查询字符串的情况下将其附加到网址。

示例:

我有一个用于切换页面的分页器,但是,如果我在第5页上选择并在我的选择下拉列表中选择每页显示10个结果,它将加载结果但从网址中删除页面= 5。如何只是附加displayPerPage而不删除我目前在分页器上的位置。

感谢您的帮助。

我知道可以在不创建自定义分页符的情况下完成它,因为我已经在laravel 4的另一个项目上完成了,但那是一段时间了,我似乎无法弄清楚如何再次这样做。

2 个答案:

答案 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