Laravel 5 分页,不会在具有自定义页面名称的页面之间移动

Laravel 5 pagination, won't move through pages with custom page name

我正在使用 setPageName 方法提供自定义页面名称 "p_role",因为我想在单个页面上使用多个分页。

但是当我设置自定义页面名称 ($roles->setPageName('p_role');) 时,呈现的(twitter-bootstrap 分页)链接不起作用。

如果将默认页面名称 "page" 设置为自定义页面名称 ($roles->setPageName('page');)

,则效果很好

那么如何在 laravel 5 分页中设置自定义页面名称。

AccessController.php

use App\Http\Controllers\Controller;
use App\Models\Role;

class AccessController extends Controller {
   public function getRole()
   {
       $roles = Role::paginate(1);
       $roles->setPageName('p_role');
       return view('role', compact('roles'));
   }
}

role.blade.php

<div>
    <ol>
        @foreach($roles as $role)
        <li>
           {{$role->name}}
        </li>
       @endforeach
    </ol>
    {!! $roles->render() !!}
</div>

输出:这些链接无效,使用 $roles->setPageName('p_role') 设置页面名称。

<ul class="pagination">
    <li class="disabled"><span>«</span></li> 
    <li class="active"><span>1</span></li>
    <li><a href="http://five/access/roles/?p_role=2">2</a></li> 
    <li><a href="http://five/access/roles/?p_role=2" rel="next">»</a></li>

这些链接工作正常,使用 $roles->setPageName('page') 设置页面名称。

<ul class="pagination">
    <li class="disabled"><span>«</span></li> 
    <li class="active"><span>1</span></li>
    <li><a href="http://five/access/roles/?page=2">2</a></li> 
    <li><a href="http://five/access/roles/?page=2" rel="next">»</a></li>
</ul> 
</ul> 

试试这个:在 控制器

public function getRole()
{
   \Paginator::setPageName('foo');
    $roles = Role::paginate(1);
    return view('role', compact('roles'));
}

这是 Laravel 中的错误:https://github.com/illuminate/pagination/blob/master/PaginationServiceProvider.php#L21

如您所见,'page' 在此处进行了硬编码。我提交了问题,您现在可以跟踪它:https://github.com/laravel/framework/issues/8000

更新:

此问题已在 L5.1 中修复,请参阅 pull request #8475