Я пытаюсь реализовать разбиение на страницы в моем представлении, но при вызове функции setSurroundCount выдает ошибку «Вызов неопределенного метода CodeIgniter \ Pager \ Pager: ConfusedetSurroundCount ()» Кто-то знает, почему?
Вот мой контроллер:
function index($limit=100) {
$model = new \App\Models\TransactionModel();
$data = [
'title' => "Transactions",
'transactionsHTMLTable' => $this->formatTransactionsAsHTMLTable($model->paginate($limit)),
'pager' => $model->pager
];
echo view('top', $data);
echo view('transactions', $data);
echo view('bottom');
}
Вот мой взгляд;
<h3>Transactions</h3>
<?php
echo $transactionsHTMLTable;
// echo $pager->links();
$pager->setSurroundCount(2);
?>
<nav aria-label="Page navigation">
<ul class="pagination">
<?php if ($pager->hasPrevious()) : ?>
<li>
<a href="<?= $pager->getFirst() ?>" aria-label="First">
<span aria-hidden="true">First</span>
</a>
</li>
<li>
<a href="<?= $pager->getPrevious() ?>" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<?php endif ?>
<?php foreach ($pager->links() as $link) : ?>
<li <?= $link['active'] ? 'class="active"' : '' ?>>
<a href="<?= $link['uri'] ?>">
<?= $link['title'] ?>
</a>
</li>
<?php endforeach ?>
<?php if ($pager->hasNext()) : ?>
<li>
<a href="<?= $pager->getNext() ?>" aria-label="Previous">
<span aria-hidden="true">»</span>
</a>
</li>
<li>
<a href="<?= $pager->getLast() ?>" aria-label="Last">
<span aria-hidden="true">Last</span>
</a>
</li>
<?php endif ?>
</ul>
</nav>
Вот функция formatTransactionsAsHTMLTable ():
function formatTransactionsAsHTMLTable($transactions) {
$htmlTable = array();
$table = new \CodeIgniter\View\Table();
$template = [
'table_open' => '<table class="table table-striped table-hover table-sm small">'
];
$table->setTemplate($template);
$table->setHeading('ID', 'Date', 'Subscription ID', 'Duration', 'Price', 'Proceed', 'Device', 'Country', 'Subscriber ID');
foreach ($transactions as $key => $transaction) {
$table->addRow($transaction['id'], $transaction['date'], $transaction['subscriptionId'], $transaction['duration'], $transaction['price'] . " " . $transaction['currency'], $transaction['proceed'] . " " . $transaction['proceedCurrency'], $transaction['device'], $transaction['country'], $transaction['subscriberId']);
}
return $table->generate();
}
Я взял все из документации Codeigniter 4.
Если я выведу $ pager-> links (), это сработает. Таким образом, $ pager здесь, но функции setSurroundCount getFirst, getNext, ... не работают. Кто-нибудь может мне помочь?