$this->contactModel->getAll(),           ...' /> $this->contactModel->getAll(),           ...' />
۰ سید جمال جلالی
پیاده سازی Pagination در پروژه
جامعه پی اچ پی ایجاد شده در ۳۰ مهر ۱۴۰۱

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;
}