【发布时间】:2015-05-12 15:24:27
【问题描述】:
我正在以表格格式向后端用户显示数据。我使用的是 Laravel 5,可以轻松处理分页。
对于放置这些页面链接的位置有一个小要求:我想将它们浮动。考虑到 Laravel 使用 Bootstrap 3 来渲染布局,我知道我可以简单地将类“pull-right”添加到元素中。
所以我像这样构建了一个自定义分页演示器:
namespace App\Http\Presenters;
use Illuminate\Pagination\BootstrapThreePresenter;
class DatatablePaginationPresenter extends BootstrapThreePresenter{
public function render()
{
if ($this->hasPages())
{
return sprintf(
'<ul class="pagination pull-right">%s %s %s</ul>',
$this->getPreviousButton(),
$this->getLinks(),
$this->getNextButton()
);
}
return '';
}
}
以及模板文件中的代码:
<div class="row">
<div class="col-md-4">Some text</div>
<div class="col-md-8">
{!! with(new App\Http\Presenters\DatatablePaginationPresenter($articles))->render() !!}
</div>
</div>
在我通过调用 appends() 在这些链接中添加一些参数之前,Laravel 可以正常工作,例如:
{!! with(new App\Http\Presenters\DatatablePaginationPresenter($articles))->appends(['sort' => $column,'order' => $order,'term' => $term])->render() !!}
这一次我得到一个 FatalException 说 Call to undefined method App\Http\Presenters\DatatablePaginationPresenter::appends()
我浏览了一些源代码以了解 appends() 的工作原理。它在 \Illuminate\Contracts\Pagination\Paginator 接口中声明,任何实现该接口的类都应该定义它。鉴于我的 Article 类扩展了 Eloquent,获取分页集合应该得到一个已经实现 appends() 的分页器。 所以没有定义 appends() 真的很奇怪。
这是我的 repo/service 层将分页数据返回到我的控制器的代码。
$articles = Article::with('category')
->select($columns)
->orderBy($column,$order)
->paginate($itemPerPage);
return $articles;
【问题讨论】:
标签: php laravel pagination laravel-5