#codeigniter #codeigniter-4
Вопрос:
Я пытаюсь добавить дополнительные методы для codeigniter4 PageRenderer, чтобы мне было легко передать номер счетчика через атрибут данных . Если я использую свой дополнительный метод непосредственно в классе PageRenderer, все работает хорошо, но если я хочу разместить свои дополнительные методы в библиотеках приложений.
//vendor/codeigniter4/framework/system/Pager/PageRenderer.php
<?php namespace CodeIgniterPager;
use CodeIgniterHTTPURI;
class PagerRenderer
{
}
Итак, в директории библиотек я могу создать класс, расширяющий класс PagerRenderer, который имеет дополнительную пользовательскую функцию для расширения некоторых функций, подобных этой:
<?php namespace AppLibraries;
use CodeIgniterPagerPagerRenderer;
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 AppLibrariesPagination
<?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>
Комментарии:
1. Так в чем же ошибка, которую вы видите?
2. Некоторая ошибка из родительского класса, я имею в виду массив, введенный в качестве параметра внутри класса PagerRenderer. __constuctor(массив $details). поэтому я получаю ошибку неопределенного количества страниц и других переменных.