bonjour à tous ! je suis entrain de creer un service API avec symfony (v5.3)
je cherche à faire sans bundler une pagination et j'utilise POSTMAN.
Voici mon controller, ma function index, j'ai bien la liste mais toute la liste et non 7 per page!
* @Route("/phone")
*
*/
class PhoneController extends AbstractController
{
/**
* @Route("/index/{page}", requirements={"page" = "\d+"}, name="phone_index", methods={"GET"})
*
* @param int $page Le numéro de la page
*/
public function index(Request $request, PhoneRepository $phoneRepository, SerializerInterface $serializer): Response
{
$page = $request->query->get('page');
if (is_null($page) || $page < 1) {
$page = 1;
}
$phones = $phoneRepository->findAllPhones($page, getenv('MAX'));
//$data = $serializer->serialize($phones,'json');
return $this->json($phones, Response::HTTP_OK, [
'groups' => [
'phone:list'
]
]);
/*return new Response($data, 200, [
'Content-Type' => 'application/json'
]);*/
} ```
voici mon repo:
class PhoneRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Phone::class);
}
//2 parametres, 2 valeurs dans la methode soit la page et maximum 7 per page
public function findAllPhones($page, $max)
{
if (!is_numeric($page)) {
throw new InvalidArgumentException(
'La valeur de l\'argument $page est incorrecte (valeur : ' . $page . ').'
);
}
if ($page < 1) {
throw new NotFoundHttpException('La page demandée n\'existe pas');
}
if (!is_numeric($max)) {
throw new InvalidArgumentException(
'La valeur de l\'argument $max est incorrecte (valeur : ' . $max . ').'
);
}
$query = $this->createQueryBuilder('pg') //genere ma requete ma page
->getQuery() // obtient la page
->setFirstResult(($page - 1)* $max) // affectation du resultat
->setMaxResults($max); // tu m'affectes 7 requetes tel max
return new Paginator($query);
}
}
je comprends pas ce que j'ai raté !
merci pour votre aide