您可以扩展lluminate\Pagination\Presenter 类并实现其抽象方法。例如(放入app/extension文件夹):
class CustomPresenter extends Illuminate\Pagination\Presenter {
public function getActivePageWrapper($text)
{
$url = $this->paginator->getUrl($this->paginator->getCurrentPage());
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $params);
return '<li id="page['.$params['page'].']" class="active"><a href="">'.$text.'</a></li>';
}
public function getDisabledTextWrapper($text)
{
return '<li class="disabled"><a href="">'.$text.'</a></li>';
}
public function getPageLinkWrapper($url, $page, $rel = null)
{
$query = parse_url($url, PHP_URL_QUERY);
parse_str($query, $params);
$id = $params['page'];
return '<li id="page['.$id.']"><a href="'.$url.'">'.$page.'</a></li>';
}
}
在composer > autoload > classmap 部分添加一个条目,如下所示:
//...
"app/tests/TestCase.php",
"app/extensions"
要使用自定义演示器:
首先,在app/views目录下创建一个view(custom-presenter.php)。然后,将app/config/view.php 配置文件中的分页选项替换为新视图的名称,如下所示:
'pagination' => 'custom-presenter'
最后,以下代码将放置在您的自定义演示者视图中:
<ul class="pagination">
<?php echo with(new CustomPresenter($paginator))->render(); ?>
</ul>
对于prev 和next,使用此JavaScript(我使用过jQuery)并将其包含在您的模板中:
<script>
$(function(){
$('ul.my-custom-pagination>li:first').attr('id', 'prev')
$('ul.my-custom-pagination>li:last').attr('id', 'next')
});
</script>
JS 以上代码将设置id=prev 和id=next,否则前两个lis 和后两个lis 的ID 将重复。最后,从终端运行composer dump。这是此实现的输出:
<ul class="pagination my-custom-pagination">
<li id="prev"><a href="http://taj.dev/ladger/agency/index?page=2">«</a></li>
<li id="page[1]"><a href="http://taj.dev/ladger/agency/index?page=1">1</a></li>
<li id="page[2]"><a href="http://taj.dev/ladger/agency/index?page=2">2</a></li>
<li id="page[3]" class="active">
<a href="">3</a></li><li class="disabled" id="next"><a href="">»</a>
</li>
</ul>
Read more on the manual.