这个过程有点意思,网络上基本都是5.3以前版本的解决方案,5.3及以后的版本都不好使了,在此记录下~
备注:需要结合illuminate/database组件一起使用
1.安装组件
composer require illuminate/database
composer require illuminate/pagination
2.Laravel的Eloquent的paginate或simplePaginate方法会返回pagination实例对象,因此直接拿来用就可以了。
// 数据获取
$items = KeywordModel::orderBy($order, 'desc')->paginate(100);
// 分页url
$items->setPath('keywords');
// 分页url带上查询参数
$items->appends('order', $order);
// 分页导航数据获取
$window = UrlWindow::make($items);
$elements = [
$window['first'],
is_array($window['slider']) ? '...' : null,
$window['slider'],
is_array($window['last']) ? '...' : null,
$window['last'],
];
// 此处我用的是twig模板引擎,其它模板引擎类似。关键是 paginator 和 elements 两个变量
echo $this->twig->render(
'seo/keyword.html',
['paginator' => $items, 'order' => $order, 'elements' => array_filter($elements)]
);
3.然后看看模板中怎么弄(供参考,可参考对应修改)。这里没有直接调用分页组件的links方法(这个与laravel自身的视图组件耦合,我们就不用了)
{% if paginator.hasPages %}
{% if paginator.onFirstPage %}
- «
{% else %}
- «
{% endif %}
{% for element in elements %}
{% if is_string(element) %}
- {{ element }}
{% endif %}
{% if is_array(element) %}
{% for page, url in element %}
{% if paginator.currentPage == page %}
- {{ page }}
{% else %}
- {{ page }}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% if paginator.hasMorePages %}
- »
{% else %}
- »
{% endif %}
{% endif %}
已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/technique/912.html 欢迎订阅Eddy Blog。