turbolabit/paginatorbundle

安装: 132

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:symfony-bundle

dev-main 2024-08-13 09:42 UTC

This package is auto-updated.

Last update: 2024-09-13 09:50:56 UTC


README

一个简单的 Symfony 扩展包,用于渲染“经典”分页元素。

它也可以作为一个纯 PHP 对象使用,不依赖于 Symfony。

📦 使用 composer 安装

symfony composer require turbolabit/paginatorbundle:dev-main

🏗️ 使用方法

src/Service/Paginator.php

<?php
namespace App\Service;

use \TurboLabIt\PaginatorBundle\Service\Paginator as BasePaginator;


class Paginator extends BasePaginator
{
    protected string $pageParam = 'p';
    protected int $slotNum      = 5;
}

src/Controller/ListingController.php

<?php
namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use App\Service\Paginator;


class ListingController extends AbstractController
{
    protected Request $request;


    public function __construct(RequestStack $requestStack, protected Paginator $paginator)
    {
        $this->request = $requestStack->getCurrentRequest();
    }


    #[Route('/{categorySlug}/', name: 'app_listing', priority: -99)]
    public function listing(string $categorySlug) : Response
    {
        $currentPage    = $this->request->get('p') ?? 1; 
        $totalPages     = 99;
        $oPages =
            $this->paginator
                ->setBaseUrl('/' . $categorySlug . '/')
                ->build($currentPage, $totalPages);

        return $this->render('listing.html.twig', [
            'page'      => $currentPage,
            'Pages'     => $oPages
        ]);
    }
}

🧪 测试方法

bash scripts/symfony-bundle-tester.sh