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
Bonjour,
ton getQuery est fait avant, donc ton setFirstResult et ton setMaxResults sont appliqués sur la query et non sur le QueryBuilder.
Essaie de faire le getQuery en dernier pour voir.
yes merci ca marche !! !des fois vraiment!!!! je suis restee jusqu'à 1h du mat entrain de chercher une parenthese en trop !!! et je l'ai vu que ce matin :) lol
merci bcp