Bonjour à tous,
Je tente de mettre en place une pagination avec knp-paginator, cela marche bien sauf que le render dans le fichier Twig renvoie du code brut au lieu de Html lorsqu'on appuie sur un des links de page suivante/précédente...
Je précise que la page affichée contenant la pagination est résultat d'une requête Ajax et apparemment cela invalide le render de knp-paginator... La limite est respectée aussi
Merci d'avance pour votre expertise
ContactsController.php :
//Rechercher un contact par alphabétique en Ajax
#[Route('liste-par-lettre', name: 'liste-par-lettre')]
public function rechercherContactParLettre(ContactsRepository $contactsRepository, Request $request,PaginatorInterface $paginator): Response
{
if ($request->isXmlHttpRequest()) {
$lettre = $request->request->get('lettre');
$donnees = $contactsRepository->rechercheContactParAlphabet($lettre);
$contacts = $paginator->paginate(
$donnees,
$request->query->getInt('page', 1),
10
);
return new JsonResponse(['content' => $this->renderView('_partials/_liste-contacts.html.twig', compact('contacts'))]);
}
}
vue Twig :
{% block body %}
{% if (contacts is defined) and (contacts|length > 0) %}
{% for c in contacts %}
<div class="card-body">
<div class="card-title">
<a href="{{path('contacts_modifier-contact',{id:c.id})}}">
<i class="fa-regular fa-pen-to-square"></i>
</a>
<a href="#">
<i class="fa-regular fa-trash-can"></i>
</a>
</div>
<div class="card-header">
<div class="details-contact">
{% if c.photo %}
<img class="photo-contact" src="{{asset('/assets/uploads/photos/contacts/mini/'~ c.photo)}}" alt="{{c.nom}} {{c.prenom}}">
{% else %}
<img class="photo-contact" src="{{asset('/assets/uploads/photos/default-avatar.svg')}}" alt="{{c.nom}} {{c.prenom}}">
{% endif %}
<p class="text-center text-blue">
<strong>{{c.nom}}
{{c.prenom}}</strong>
</p>
<p class="text-center">{{c.ville}}</p>
<p class="text-center">
<a href="">{{c.mail1}}</a>
</p>
{# <p><a href="">{{c.tel1}}</a></p> #}
</div>
</div>
<div class="card-actions">
<a class="btn-options-contact" href="{{path('ecritures_creer-facture',{idContact:c.id})}}">Créer facture</a>
<a class="btn-options-contact" href="{{path('ecritures_creer-devis',{idContact:c.id})}}">Créer devis</a>
<a class="btn-options-contact" href="#">Créer rdv</a>
</div>
<div class="checkboxes-options-contact">
<div class="checkboxes">
<label for="checkbox-ecritures">
<i class="fa-regular fa-eye"></i>Ecritures</label>
<input type="checkbox" name="checkboxes-options-contact[]" id="checkbox_ecritures" class="checkboxes-options-contact" data-idcontact={{c.id}}>
</div>
<div class="checkboxes">
<label for="checkbox-rdv">
<i class="fa-regular fa-eye"></i>Rendez-vous</label>
<input type="checkbox" name="checkboxes-options-contact[]" id="checkbox_rdv" class="checkboxes-options-contact" data-idcontact={{c.id}}>
</div>
</div>
{# Affiché en Ajax #}
<div class="ecritures-contact" id="ecritures-contact-{{c.id}}"></div>
<div class="rdv-contact" id="rdv-contact-{{c.id}}"></div>
</div>
{% endfor %}
<div class="pagination">
{{knp_pagination_render(contacts)}}
</div>
{% else %}
<p>Aucun contact n'a encore été enregistré dans la base.</p>
{% endif %}
{% endblock %}