Bonjour,
J'affiche une liste de projet qui est paginée et peut-être filtrer. En cas de changement de page ou de changement de filtre j'effectu une requette en ajax qui me renvoi un contenu html issue d'une vue créer pour l'occasion.
$.ajax({
url: "/pages/projets",
data: {
page: currentPage,
categorie: $(this).val()
},
dataType: 'html',
type: 'get',
success: function (html) {
$(".list-projet").html(html);
}
})
Jusque là aucun souci, le problème est que j'affiche la page en cours ainsi que le nombre de résultats et que ces informations ne sont pas remplacer sur la page suite à ma requette ajax puisque j'injecte le resultat dans un autre élémént du DOM. Je souhaiterai donc pouvoir mettre à jour ces informations que je peux récupérer via $this->request->params['paging']['Projets']['pageCount']; dans ma vue charger en ajax.
Une solution serait sans doute de charger du JSON et de générer de l'html avec jquery mais je trouve ca un peu violent et qu'il y a un traitement php necessaire pour l'affichage des images par exemple qui risque de poser problème.
Une solution bien moche serait de cacher les informations de pagination dont j'ai besoin dans le DOM de la vue charger en ajax, de les récupérer en js et de les afficher où je le souhaite dans ma page. Je m'y refuse pour l'instant mais cela me semble être la solution la plus simple.
Autre idée, faire une deuxième requete ajax pour récupérer les informations de pagination une fois la première terminée.
En espérant avoir été clair et que quelqu'un pourra m'aiguiller.
Merci d'avance
Antoine
Ma vue si necessaire :
<div class="bloc-shadow">
<div class=" bloc-filter">
<div class="line">
<label>Catégories :</label>
<select id="categories">
<option value='0'>Toutes</option>
<?php foreach($categories as $key => $categorie){
echo "<option value='$key'>$categorie</option>";
} ?>
</select>
</div>
<div class="line">
<label>Métiers :</label>
<select id="metiers">
<option value='0'>Tous</option>
<?php foreach($metiers as $key => $metier){
echo "<option value='$key'>$metier</option>";
} ?>
</select>
</div>
</div>
<div class="bloc-infos">
<span class="results"><?= $this->request->params['paging']['Projets']['count']; ?> résulltats</span>
<a href="" class="fleche right"><i class="icon-chevron-thin-right"></i></a>
<a href="" class="fleche left"><i class="icon-chevron-thin-left"></i></a>
<span class="pages">page <span class="orange"><?= $this->request->params['paging']['Projets']['page']; ?></span> sur <?= $this->request->params['paging']['Projets']['pageCount']; ?></span>
</div>
</div>
<ul class="list-projet">
<?php foreach($projets as $projet) {?>
<?php ( is_null($projet->thumb) ) ? $img_url = '' : $img_url = $this->Image->resizedUrl($projet->thumb->file, 250, 360); ?>
<li>
<a href="" style="background-image: url('/img/<?= $img_url; ?>');">
<div class="infos">
<p class="ville"><?= $projet->lieu ?></p>
<h3><?= $projet->name ?></h3>
</div>
</a>
</li>
<?php } ?>
</ul>