使用Laravel框架怎么实现一个分页功能
创始人
2024-12-07 16:01:15
0次

Laravel使用的过程中,有些功能把前端页面的表达“写死了”,比如分页的翻页按钮!

当然你会说Laravel的Bootstrap样式也很好看啊,但是实际项目中,翻页按钮常常需要满足的客户的需要,特别在开发一款支持手机适配的Web APP,更是需要使用自定义的样式。

所以,学习一样东西不能一知半解,而是究其原理。

先来看看Laravel是怎么分页的,生成分页按钮的代码究竟写在了哪里?

Laravel目录\vendor\laravel\framework\src\Illuminate\Pagination下

先理一下类的继承关系

PresenterContract(父类)
┗BootstrapThreePresenter(子类)<-SimpleBootstrapThreePresenter
┗BootstrapFourPresenter(子类)<-SimpleBootstrapFourPresenter

从作者对类的命名上看,必有区别,我们从代码上研究

BootstrapThreePresenter.php和BootstrapFourPresenter.php主要区别在下列函数

BootstrapThreePresenter.php代码:

/**
* Get HTML wrapper for an available page link.
*
* @param string $url
* @param int $page
* @param string|null $rel
* @return string
*/
protected function getAvailablePageWrapper($url, $page, $rel = null)
{
    $rel = is_null($rel) ? '' : ' rel="'.$rel.'"';
    return '
  • '.$page.'
  • '; } /** * Get HTML wrapper for disabled text. * * @param string $text * @return string */ protected function getDisabledTextWrapper($text) {     return ''.$text.''; } /** * Get HTML wrapper for active text. * * @param string $text * @return string */ protected function getActivePageWrapper($text) {     return ''.$text.''; }

    BootstrapFourPresenter.php代码:

    /**
    * Get HTML wrapper for an available page link.
    *
    * @param string $url
    * @param int $page
    * @param string|null $rel
    * @return string
    */
    protected function getAvailablePageWrapper($url, $page, $rel = null)
    {
        $rel = is_null($rel) ? '' : ' rel="'.$rel.'"';
        return ''.$page.'';
    }
    /**
    * Get HTML wrapper for disabled text.
    *
    * @param string $text
    * @return string
    */
    protected function getDisabledTextWrapper($text)
    {
        return ''.$text.'';
    }
    /**
    * Get HTML wrapper for active text.
    *
    * @param string $text
    * @return string
    */
    protected function getActivePageWrapper($text)
    {
        return ''.$text.'';
    }

    我们发现最大的区别在ThreePresenter几乎是“裸”HTML标签,而FourPresenter生成的是带class的HTML标签。

    无论是ThreePresenter还是FourPresenter,他们都有一个相同实现的render()函数

    /**
    * Convert the URL window into Bootstrap HTML.
    *
    * @return \Illuminate\Support\HtmlString
    */
    public function render()
    {
        if ($this->hasPages()) {
          return new HtmlString(sprintf(
            '%s %s %s',
            $this->getPreviousButton(),
            $this->getLinks(),
            $this->getNextButton()
          ));
        }
        return '';
    }

    细心的读者已经发觉,还有两个继承类,分别是SimpleThreePresenter和SimpleFourPresenter,既然是Simple(简单),区别就在他们的render()函数

    /**
    * Convert the URL window into Bootstrap HTML.
    *
    * @return \Illuminate\Support\HtmlString
    */
    public function render()
    {
        if ($this->hasPages()) {
          return new HtmlString(sprintf(
            '%s %s',
            $this->getPreviousButton(),
            $this->getNextButton()
          ));
        }
        return '';
    }

    相关内容

    热门资讯

    空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
    空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
    格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
    空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
    格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
    品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
    空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
    空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
    中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
    中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...