如何脱离Laravel(v5.3+)独立使用illuminate/pagination分页组件

Eddy 发布于2017-4-22 9:26:19 分类: 技术心得 已浏览loading 网友评论0条 我要评论

这个过程有点意思,网络上基本都是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 %}

<ul class="am-pagination">

    {% if paginator.onFirstPage %}

    <li class="am-disabled"><span>&laquo;</span></li>

    {% else %}

    <li><a href="{{ paginator.previousPageUrl }}" rel="prev">&laquo;</a></li>

    {% endif %}


    {% for element in elements %}

        {% if is_string(element) %}

        <li class="am-disabled"><span>{{ element }}</span></li>

        {% endif %}


        {% if is_array(element) %}

            {% for page, url in element %}

            {% if paginator.currentPage == page %}

            <li class="am-active"><span>{{ page }}</span></li>

            {% else %}

            <li><a href="{{ url }}">{{ page }}</a></li>

            {% endif %}

            {% endfor %}

        {% endif %}

    {% endfor %}


    {% if paginator.hasMorePages %}

    <li><a href="{{ paginator.nextPageUrl }}" rel="next">&raquo;</a></li>

    {% else %}

    <li class="am-disabled"><span>&raquo;</span></li>

    {% endif %}

</ul>

{% endif %}


 

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/technique/912.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言