Расширение PagerRenderer и создание других новых методов ci4

#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). поэтому я получаю ошибку неопределенного количества страниц и других переменных.