From 1841028151489488838ca1fdd41acbb59322066a Mon Sep 17 00:00:00 2001 From: "art.dambrine" Date: Wed, 31 Mar 2021 12:09:58 +0200 Subject: [PATCH] pokedex pagination and refacto --- .idea/php.xml | 2 + composer.json | 1 + composer.lock | 147 +++++++++++++++++- config/bundles.php | 1 + config/packages/paginator.yaml | 14 ++ public/favicon.ico | Bin 0 -> 15406 bytes public/icon.png | Bin 0 -> 15932 bytes src/Controller/PokemonController.php | 23 ++- symfony.lock | 6 + templates/base.html.twig | 9 +- .../SwaggerUi/index.html.twig | 0 templates/pokemon/index.html.twig | 4 + 12 files changed, 196 insertions(+), 11 deletions(-) create mode 100644 config/packages/paginator.yaml create mode 100644 public/favicon.ico create mode 100644 public/icon.png create mode 100644 templates/bundles/ApiPlatformBundle/SwaggerUi/index.html.twig diff --git a/.idea/php.xml b/.idea/php.xml index 7a74033..b7b18d6 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -107,6 +107,8 @@ + + diff --git a/composer.json b/composer.json index 6836bb1..782d4c3 100644 --- a/composer.json +++ b/composer.json @@ -13,6 +13,7 @@ "doctrine/doctrine-bundle": "^2.3", "doctrine/doctrine-migrations-bundle": "^3.0", "doctrine/orm": "^2.8", + "knplabs/knp-paginator-bundle": "^5.4", "nelmio/cors-bundle": "^2.1", "phpdocumentor/reflection-docblock": "^5.2", "sensio/framework-extra-bundle": "^5.1", diff --git a/composer.lock b/composer.lock index 7a52ebd..38b4a07 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "ae2e9c67c9b1291a357031a97bb24bb9", + "content-hash": "7f19c1fbf5a162c6ac24cf3f55978592", "packages": [ { "name": "api-platform/core", @@ -1683,6 +1683,151 @@ ], "time": "2021-01-14T21:52:44+00:00" }, + { + "name": "knplabs/knp-components", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/knp-components.git", + "reference": "7db2eb032591ded5809455af8a4dfdfda079041c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/knp-components/zipball/7db2eb032591ded5809455af8a4dfdfda079041c", + "reference": "7db2eb032591ded5809455af8a4dfdfda079041c", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0", + "symfony/event-dispatcher-contracts": "^1.1 || ^2.0", + "symfony/http-foundation": "^4.4 || ^5.1" + }, + "require-dev": { + "doctrine/mongodb-odm": "^2.0", + "doctrine/orm": "^2.7", + "doctrine/phpcr-odm": "^1.2", + "ext-pdo_sqlite": "*", + "jackalope/jackalope-doctrine-dbal": "^1.2", + "phpunit/phpunit": "^9.5", + "ruflin/elastica": "^7.0", + "symfony/http-kernel": "^4.4 || ^5.1", + "symfony/property-access": "^4.4 || ^5.1" + }, + "suggest": { + "doctrine/common": "to allow usage pagination with Doctrine ArrayCollection", + "doctrine/mongodb-odm": "to allow usage pagination with Doctrine ODM MongoDB", + "doctrine/orm": "to allow usage pagination with Doctrine ORM", + "doctrine/phpcr-odm": "to allow usage pagination with Doctrine ODM PHPCR", + "propel/propel1": "to allow usage pagination with Propel ORM", + "ruflin/elastica": "to allow usage pagination with ElasticSearch Client", + "solarium/solarium": "to allow usage pagination with Solarium Client", + "symfony/property-access": "To allow sorting arrays" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Component\\": "src/Knp/Component" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs Team", + "homepage": "https://knplabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://github.com/KnpLabs/knp-components/contributors" + } + ], + "description": "Knplabs component library", + "homepage": "http://github.com/KnpLabs/knp-components", + "keywords": [ + "components", + "knp", + "knplabs", + "pager", + "paginator" + ], + "time": "2021-03-16T13:52:01+00:00" + }, + { + "name": "knplabs/knp-paginator-bundle", + "version": "v5.4.2", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/KnpPaginatorBundle.git", + "reference": "8a7255062dd9f6ff8a3a4712a4b34bdbbc9f31f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/KnpPaginatorBundle/zipball/8a7255062dd9f6ff8a3a4712a4b34bdbbc9f31f7", + "reference": "8a7255062dd9f6ff8a3a4712a4b34bdbbc9f31f7", + "shasum": "" + }, + "require": { + "knplabs/knp-components": "^2.4 || ^3.0", + "php": "^7.3 || ^8.0", + "symfony/config": "^4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/event-dispatcher": "^4.4 || ^5.0", + "symfony/http-foundation": "^4.4 || ^5.0", + "symfony/http-kernel": "^4.4 || ^5.0", + "symfony/routing": "^4.4 || ^5.0", + "symfony/translation": "^4.4 || ^5.0", + "twig/twig": "^2.0 || ^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.4", + "symfony/expression-language": "^4.4 || ^5.0", + "symfony/templating": "^4.4 || ^5.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Knp\\Bundle\\PaginatorBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KnpLabs Team", + "homepage": "http://knplabs.com" + }, + { + "name": "Symfony Community", + "homepage": "http://github.com/KnpLabs/KnpPaginatorBundle/contributors" + } + ], + "description": "Paginator bundle for Symfony to automate pagination and simplify sorting and other features", + "homepage": "http://github.com/KnpLabs/KnpPaginatorBundle", + "keywords": [ + "bundle", + "knp", + "knplabs", + "pager", + "pagination", + "paginator", + "symfony" + ], + "time": "2020-12-17T08:19:16+00:00" + }, { "name": "laminas/laminas-code", "version": "4.0.0", diff --git a/config/bundles.php b/config/bundles.php index d208c11..3e721a1 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -14,4 +14,5 @@ return [ Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], + Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true], ]; diff --git a/config/packages/paginator.yaml b/config/packages/paginator.yaml new file mode 100644 index 0000000..6e86e99 --- /dev/null +++ b/config/packages/paginator.yaml @@ -0,0 +1,14 @@ +# config/packages/paginator.yaml +knp_paginator: + page_range: 5 # number of links showed in the pagination menu (e.g: you have 10 pages, a page_range of 3, on the 5th page you'll see links to page 4, 5, 6) + default_options: + page_name: page # page query parameter name + sort_field_name: sort # sort field query parameter name + sort_direction_name: direction # sort direction query parameter name + distinct: true # ensure distinct results, useful when ORM queries are using GROUP BY statements + filter_field_name: filterField # filter field query parameter name + filter_value_name: filterValue # filter value query paameter name + template: + pagination: '@KnpPaginator/Pagination/twitter_bootstrap_v4_pagination.html.twig' # sliding pagination controls template + sortable: '@KnpPaginator/Pagination/sortable_link.html.twig' # sort link template + filtration: '@KnpPaginator/Pagination/filtration.html.twig' # filters template \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a97cac54a45913a07af5cb6561c098390f3326e4 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/public/icon.png b/public/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..88a9afe28e94f355ae436ebd1b8a53bbc663a983 GIT binary patch literal 15932 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 literal 0 HcmV?d00001 diff --git a/src/Controller/PokemonController.php b/src/Controller/PokemonController.php index d9114d5..28314df 100644 --- a/src/Controller/PokemonController.php +++ b/src/Controller/PokemonController.php @@ -5,11 +5,11 @@ namespace App\Controller; use App\Entity\Pokemon; use App\Form\PokemonType; use App\Repository\PokemonRepository; -use phpDocumentor\Reflection\Types\Array_; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use Knp\Component\Pager\PaginatorInterface; /** * @Route("/pokemon") @@ -19,18 +19,27 @@ class PokemonController extends AbstractController /** * @Route("/", name="pokemon_index", methods={"GET"}) */ - public function index(PokemonRepository $pokemonRepository, Request $request): Response + public function index(PokemonRepository $pokemonRepository, Request $request, PaginatorInterface $paginator): Response { // Si l'utilisateur saisit un mot clé if ($pokemonSearchTerm = $request->query->get('keyword')) { - return $this->render('pokemon/index.html.twig', [ - 'pokemon' => $pokemonRepository->findPokemonsWithSearchTerm($pokemonSearchTerm), - ]); + $qr = $pokemonRepository->findPokemonsWithSearchTerm($pokemonSearchTerm); + } else { + // Sinon on affichera tout les pokemons + $qr = $pokemonRepository->findAll(); } - // Sinon on affiche tout les pokemons + // Paginate the results of the query + $pokemons = $paginator->paginate( + // TODO: poser la question à Simon (performances moindres avec passage du result ?) + $qr, /*query NOT result*/ + $request->query->getInt('page', 1), /*page number*/ + 15 /*Items per page*/ + ); + + return $this->render('pokemon/index.html.twig', [ - 'pokemon' => $pokemonRepository->findAll(), + 'pokemon' => $pokemons, ]); } diff --git a/symfony.lock b/symfony.lock index ce5c9e5..5e21b47 100644 --- a/symfony.lock +++ b/symfony.lock @@ -105,6 +105,12 @@ "friendsofphp/proxy-manager-lts": { "version": "v1.0.3" }, + "knplabs/knp-components": { + "version": "v3.0.2" + }, + "knplabs/knp-paginator-bundle": { + "version": "v5.4.2" + }, "laminas/laminas-code": { "version": "4.0.0" }, diff --git a/templates/base.html.twig b/templates/base.html.twig index 4dcff18..42c6fac 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -10,18 +10,22 @@ {% endblock %} + +