zoukankan      html  css  js  c++  java
  • thinkphp5.0 ajax分页

    放到    ***thinkphplibrary hinkpaginatordriverAjaxbootstrap.php

    分页的type参数为ajaxbootstrap

    <?php
    // +----------------------------------------------------------------------
    // | ThinkPHP [ WE CAN DO IT JUST THINK ]
    // +----------------------------------------------------------------------
    // | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.
    // +----------------------------------------------------------------------
    // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
    // +----------------------------------------------------------------------
    // | Author: zhangyajun <448901948@qq.com>
    // +----------------------------------------------------------------------

    namespace thinkpaginatordriver;

    use thinkPaginator;

    class Ajaxbootstrap extends Paginator
    {

    /**
    * 上一页按钮
    * @param string $text
    * @return string
    */
    protected function getPreviousButton($text = "&laquo;")
    {

    if ($this->currentPage() <= 1) {
    return $this->getDisabledTextWrapper($text);
    }

    $url = $this->currentPage() - 1;

    return $this->getPageLinkWrapper($url, $text);
    }

    /**
    * 下一页按钮
    * @param string $text
    * @return string
    */
    protected function getNextButton($text = '&raquo;')
    {
    if (!$this->hasMore) {
    return $this->getDisabledTextWrapper($text);
    }

    $url = $this->currentPage() + 1;
    return $this->getPageLinkWrapper($url, $text);
    }

    /**
    * 页码按钮
    * @return string
    */
    protected function getLinks()
    {
    if ($this->simple)
    return '';

    $block = [
    'first' => null,
    'slider' => null,
    'last' => null
    ];

    $side = 3;
    $window = $side * 2;

    if ($this->lastPage < $window + 6) {
    $block['first'] = $this->getUrlRange(1, $this->lastPage);
    } elseif ($this->currentPage <= $window) {
    $block['first'] = $this->getUrlRange(1, $window + 2);
    $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
    } elseif ($this->currentPage > ($this->lastPage - $window)) {
    $block['first'] = $this->getUrlRange(1, 2);
    $block['last'] = $this->getUrlRange($this->lastPage - ($window + 2), $this->lastPage);
    } else {
    $block['first'] = $this->getUrlRange(1, 2);
    $block['slider'] = $this->getUrlRange($this->currentPage - $side, $this->currentPage + $side);
    $block['last'] = $this->getUrlRange($this->lastPage - 1, $this->lastPage);
    }

    $html = '';

    if (is_array($block['first'])) {
    $html .= $this->getUrlLinks($block['first']);
    }

    if (is_array($block['slider'])) {
    $html .= $this->getDots();
    $html .= $this->getUrlLinks($block['slider']);
    }

    if (is_array($block['last'])) {
    $html .= $this->getDots();
    $html .= $this->getUrlLinks($block['last']);
    }

    return $html;
    }

    /**
    * 渲染分页html
    * @return mixed
    */
    public function render()
    {
    if ($this->hasPages()) {
    if ($this->simple) {
    return sprintf(
    '<ul class="pager">%s %s</ul>',
    $this->getPreviousButton(),
    $this->getNextButton()
    );
    } else {
    return sprintf(
    '<ul class="pagination">%s %s %s</ul>',
    $this->getPreviousButton(),
    $this->getLinks(),
    $this->getNextButton()
    );
    }
    }
    }

    /**
    * 生成一个可点击的按钮
    *
    * @param string $url
    * @param int $page
    * @return string
    */
    protected function getAvailablePageWrapper($url, $page)
    {
    preg_match('/^(?:.*)&page=(d)(?:.*)?$/',$url,$b);
    if(!empty($b)){
    $url=$b[1];
    }
    return '<li><a href="javascript:;" onclick=ajaxpage('.$url.')>' . $page . '</a></li>';
    }

    /**
    * 生成一个禁用的按钮
    *
    * @param string $text
    * @return string
    */
    protected function getDisabledTextWrapper($text)
    {
    return '<li class="disabled"><span>' . $text . '</span></li>';
    }

    /**
    * 生成一个激活的按钮
    *
    * @param string $text
    * @return string
    */
    protected function getActivePageWrapper($text)
    {
    return '<li class="active"><span>' . $text . '</span></li>';
    }

    /**
    * 生成省略号按钮
    *
    * @return string
    */
    protected function getDots()
    {
    return $this->getDisabledTextWrapper('...');
    }

    /**
    * 批量生成页码按钮.
    *
    * @param array $urls
    * @return string
    */
    protected function getUrlLinks(array $urls)
    {
    $html = '';

    foreach ($urls as $page => $url) {
    $html .= $this->getPageLinkWrapper($url, $page);
    }

    return $html;
    }

    /**
    * 生成普通页码按钮
    *
    * @param string $url
    * @param int $page
    * @return string
    */
    protected function getPageLinkWrapper($url, $page)
    {
    if ($page == $this->currentPage()) {
    return $this->getActivePageWrapper($page);
    }

    return $this->getAvailablePageWrapper($url, $page);
    }
    }

  • 相关阅读:
    AX ERROR: Could not find my mock parent, most likely I am stale 不及格的程序员
    利用Segue在视图控制器间传值的问题 不及格的程序员
    Creating a Singleton Instance 不及格的程序员
    iPad 通知 UIKeyboardWillShowNotification 不会在keyBoard处在Undock状态下接到通知 不及格的程序员
    Why RootViewController's view is rotated Automatically by System when the app first loaded? 不及格的程序员
    如何弹出UIDatePicker最好 不及格的程序员
    jQuery开始做恶了 不及格的程序员
    what is the SEL,id and IMP,Class ,Method? 不及格的程序员
    Objectivec 字符串比较的陷井 不及格的程序员
    Unable to create any keyboard shortcuts after the iOS 6.1.3 update on iPad. 不及格的程序员
  • 原文地址:https://www.cnblogs.com/chengfengchi/p/10333897.html
Copyright © 2011-2022 走看看