1- آماده کردن دیتا در کنترلر جهت تزریق به view
public function index()
{
$data = [
'contacts' => $this->contactModel->getAll(),
'pageCount' => $this->pageCount()
];
view('home.index', $data);
}
// gettin total amount of pages (Base on )
public function pageCount()
{
$rowCount = $this->contactModel->count([]);
$pageCount = $rowCount/$this->contactModel->getPageSize(); //create a getter method to get $pageSize property or change protected '$pageSize' to public
return (int) ceil($pageCount) ;
}
2- جهت دریافت rowCount به دلیل مشکلی در متد count مربوط به medoo احتمالا به مشکل بخورید که داخل یکی از سوالات همین تاپیک اصلاح شد.
3-یه تغییر کوچیک هم داخل متد get مربوط به Basemodel داده شد جهت ست کردن مقدار default مربوط به $_GET
$page = ((isset($_GET['page'])) && is_numeric($_GET['page'])) ? $_GET['page'] : 1 && $_GET['page']=1;
4- تکمیل فایل index.php واقع در view با اضاف کردن :
<div class="pagination">
<a href= "?page= (($_GET['page']-1)<1) ? 1:($_GET['page']-1) ?>" > before a>
for ($i = 1; $i <= $pageCount; $i++) : ?>
<li class= ($_GET['page'] == $i) ? 'active' : '' ?>>
<a href="?page= $i ?>" > $i ?> a>
li>
endfor ?>
<a href= "?page= (($_GET['page']+1)>$pageCount) ? $pageCount:($_GET['page']+1) ?>" > after a>
div>
5- اینم css مربوط به تگ ها
.pagination { display: flex; justify-content: center; } .pagination a { color: black; float: left; padding: 8px 16px; text-decoration: none; } div li.active a { background-color: #4CAF50; color: white; border-radius: 5px; } .pagination a:hover:not(.active) { background-color: #ddd; border-radius: 5px; }