首页 > 解决方案 > 扩展 PagerRenderer 并创建其他新方法 ci4

问题描述

我正在尝试为 codeigniter4 PageRenderer添加额外的方法,因此我可以很容易地通过 data 属性获取计数器编号。如果我直接对 PageRenderer 类使用我的附加方法,一切运行良好,但是如果我想通过应用程序库放置我的附加方法。

//vendor/codeigniter4/framework/system/Pager/PageRenderer.php

<?php namespace CodeIgniter\Pager;

use CodeIgniter\HTTP\URI;

class PagerRenderer
{
}

因此,在 Libraries 目录中,我可以创建一个扩展 PagerRenderer 类的类,该类具有额外的自定义功能来扩展一些功能,如下所示:

<?php namespace App\Libraries;

use CodeIgniter\Pager\PagerRenderer;
class Pagination extends PagerRenderer
{
    public function __construct(){
        parent::__construct();
    }
    // Get First Page Number 
    public function getFirstPageCounter(): int{
       return (int) ($this->segment === 0) ? 1 : $this->segment; 
    }
     
    // get Last page Number
    public function getLastPageCounter(){
        return (int)($this->segment === 0) ? $this->pageCount: $this->segment;
    }
     
    // Get previous Page number
    public function getPreviousPageCounter(){
        if (! $this->hasPrevious()){ return null; }
        return (int) ($this->segment === 0) ? $this->first - 1 : $this->segment;
    }
     
    // get Next Page Number
    public function getNextPageCounter(){
        if (! $this->hasNext()){ return null; }
        return (int) ($this->segment === 0) ? $this->last + 1 : $this->last + 1;
    }   
}

对于在分页导航视图中使用这些方法,在 App/Views/Pagination/pagination.php 中将是这样的

//pagination.php
use App\Libraries\Pagination\
<?php $pager->setSurroundCount(2); ?>

<ul class="pagination">
    <?php if ($pager->hasPrevious()) : ?>
        <li><a href="<?= $pager->getFirst() ?>" data-page="<?= $pager->getFirstPageCounter() ?>"></a></li>
        <li><a href="<?= $pager->getPrevious() ?>" data-page="<?= $pager->getLastPageCounter() ?>"></a></li>
    <?php endif ?>

    <?php foreach ($pager->links() as $link) : ?>
        <li <?= $link['active'] ? 'class="active"' : '' ?>><a href="<?= $link['uri'] ?>" data-page="<?= $link['title'] ?>"><?= $link['title'] ?></a></li>
    <?php endforeach ?>

    <?php if ($pager->hasNext()) : ?>
        <li><a href="<?= $pager->getNext() ?>"  data-page="<?= $pager->getNextPageCounter() ?>"></a></li>
        <li><a href="<?= $pager->getLast() ?>" data-page="<?= $pager->getPreviousPageCounter() ?>"></a></li>
    <?php endif ?>
</ul>

标签: codeignitercodeigniter-4

解决方案


推荐阅读