Skip to content

09.b.Pagination

Muhammet ŞAFAK edited this page Nov 20, 2022 · 2 revisions

Pagination Util

Sayfalama bir araç olarak v2.0.6 ile birlikte eklendi. İçeriklerinizi daha kolay bir şekilde sayfalayabilmeniz için geliştirildi.

Kullanım;

$res = DB::table('posts')
        ->select('id', 'title')
        ->where('status', 1)
        ->pagination(($_GET['page'] ?? 1), 10);

foreach($res->asAssoc()->rows() as $row){
    echo '#' . $row['id'] . ' ' . $row['title']; // Sayfadaki içerikleri ekrana bas.
}

echo $res->toHTML();

Not : Pagination kullanırken en doğru sonucu elde etmek için limit() ve offset() kullanmayın.

Sayfa Linklerini Özelleştirme

Sayfalama için kullanacağınız link yapısını/şemasını pagination() yönteminin üçüncü parametresi olarak verebilirsiniz.

Not : {page} ifadesi sayfa numarasını ifade eder.

$res = DB::table('posts')
        ->select('id', 'title')
        ->where('status', 1)
        ->pagination(($_GET['page'] ?? 1), 10, 'http://example.com/page/{page}');

foreach($res->asAssoc()->rows() as $row){
    echo '#' . $row['id'] . ' ' . $row['title']; // Sayfadaki içerikleri ekrana bas.
}

echo $res->toHTML();

Örnek HTML çıktısı şuna benzer;

<!-- pagination -->
<nav>
    <ul>
        <li><a href="http://example.com/page/4">&laquo;</a></li>
        <li><a href="http://example.com/page/1">1</a></li>
        <li><a href="http://example.com/page/2">2</a></li>
        <li><a href="http://example.com/page/3">3</a></li>
        <li><a href="http://example.com/page/4">4</a></li>
        <li class="active"><a href="http://example.com/page/5">5</a></li>
        <li><a href="http://example.com/page/6">6</a></li>
        <li><a href="http://example.com/page/7">7</a></li>
        <li><a href="http://example.com/page/8">8</a></li>
        <li><a href="http://example.com/page/6">&raquo;</a></li>
    </ul>
</nav>

Navigation Özelleştirme

Varsayılan olarak oldukça basit bir html liste elemanı olarak döner ve 8-10 adet link gösterecek şekilde yapılandırılır.

Gösterilecek eleman sayısını arttırmak için; setDisplayedPage() yöntemini, toHTML() yönteminden önce kullanabilirsiniz. Bu yöntem gösterilecek maksimum sayfa sayısını bir çift sayı olarak alır. Tek sayı verilirse +1 ile çift sayı yapılarak kullanılır.

$res = DB::table('posts')
        ->select('id', 'title')
        ->where('status', 1)
        ->pagination(($_GET['page'] ?? 1), 10, 'http://example.com/page/{page}');

foreach($res->asAssoc()->rows() as $row){
    echo '#' . $row['id'] . ' ' . $row['title']; // Sayfadaki içerikleri ekrana bas.
}

echo $res->setDisabledPage(12)->toHTML();

Üretilecek html çıktısındaki html etiketlerinin attribute değerlerini tanımlamak için toHTML() metoduna bir dizi olarak tanımlayabilirsiniz.

$res = DB::table('posts')
        ->select('id', 'title')
        ->where('status', 1)
        ->pagination(($_GET['page'] ?? 1), 10, 'http://example.com/page/{page}');

foreach($res->asAssoc()->rows() as $row){
    echo '#' . $row['id'] . ' ' . $row['title']; // Sayfadaki içerikleri ekrana bas.
}

echo $res->toHTML([
    'next_label'        => 'Sonraki Sayfa',
    'prev_label'        => 'Önceki Sayfa',
    'nav'               => [
        'area-label'        => 'Page navigation example',
        'id'                => 'pagination',
    ],
    'ul'                => ['class' => 'pagination'],
    'li'                => [
        'class'         => 'page-item',
        'a'                 => [
            'class'             => 'page-link',
        ],
    ],
]);

Örnek HTML çıktısı şuna benzer;

<!-- pagination -->
<nav area-label="Page navigation example" id="pagination">
    <ul class="pagination">
        <li class="page-item"><a class="page-link" href="http://example.com/page/4">Önceki Sayfa</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/1">1</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/2">2</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/3">3</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/4">4</a></li>
        <li class="page-item active"><a class="page-link" href="http://example.com/page/5">5</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/6">6</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/7">7</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/8">8</a></li>
        <li class="page-item"><a class="page-link" href="http://example.com/page/6">Sonraki Sayfa</a></li>
    </ul>
</nav>
Clone this wiki locally