codeigniter - 扩展 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>
解决方案
推荐阅读
- sql - Redshift - 从单元格中提取最右边的值
- c++ - 是否需要使用共享库的不同 lua_State?
- c# - 如何在 Azure Function 中访问本地应用设置
- javascript - JavaScript 如何确保使用 Unicode 字符集编写程序?
- flutter-layout - 如何将小部件带到 Flutter 中其他小部件的右侧
- ios - 在 OC 项目中引入 Swift 导致归档错误与 xcodebuild,使用 xcode 将可以
- arrays - 如何在swift 4中将多个数据存储在一个数组中?
- mongodb - 在数组中查找包含特定值或存在于数组中的文档
- jwt - GenTux\Jwt\Drivers\JwtDriverInterface 不可实例化
- elasticsearch - @IndexedEmbedded 和 @ContainedIn 关系不起作用