IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

Pagination Ajax cakePHP 3.0


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Pagination Ajax cakePHP 3.0
    Bonjour,

    J'ai réalisé un filtre de recherche à partir duquel un utilisateur, à l'aide de menus déroulants, choisit les valeurs qu'ils souhaitent rechercher. Sans recharger la page je désire afficher les résultats dans un tableau en bas de cette page avec la fameuse pagination !

    Je vous explique, dans une vue A, j'ai un filtre de recherche où l'utilisateur saisi les éléments sur lesquelles ils désirent faire sa recherche. Dans cette même vue je réalise donc un appel Ajax qui va me rediriger vers l'action 'index' de mon controller "AController" avec comme données les valeurs des filtres de recherches saisis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        var tab = new Array();
            function updateResult(){
                    $.ajax({
                        type:"POST",
                        url:"<?php echo Router::url(array('controller'=>'AController','action'=>'index'));?>",
                        data : {dataFVariables: $("select[name='filtreVariable\\[\\]']").map(function(){return $(this).val();}).get()},
                        dataType: 'json',
                        async:false,
                        success: function(tab){
                            ..........
                            // Création d'un tableau avec les données de tab retournées par index
                            ..........
                        },
                        error: function (tab) {
                            alert('error');
                        }
                    });
            }
    Dans l'index de mon controller, j'ai un appel à la base de données d'où je récupère un grand nombre de résultats.
    A partir de ces résultats je crée un tableau (dans le success de l'appel Ajax) mais ce dernier n'est pas paginé.. En effet si dans mon controller je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                .............
           $this->paginate($query);
     
           // On encode le tableau en json qui est retourné à l'appel Ajax
           echo json_encode($query);
    Les résultats, dans mon tableau, seront bien présents dans la première page mais absents des pages suivantes, comment faire en sorte que la pagination fonctionne avec l'appel Ajax ?

    Merci beaucoup !!

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bonjour,
    Je ne comprend pas bien ta dernière partie ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Bonjour,
    Je ne comprend pas bien ta dernière partie ?
    Bonjour !

    Dans mon controller qui est appelé à partir de :
    url:"<?php echo Router::url(array('controller'=>'AController','action'=>'index'));?>"

    Je récupère les données que je veux afficher à terme dans le tableau.
    J'utilise les variables (dans data de l'appel ajax) récupérées du filtre de recherche et réalise des requêtes en base. Le résultat est stocké dans une variable $query que j'encode en json et envoie en réponse à ma fonction ajax.

    Lorsque ma fonction ajax reçoit les données, elle doit créer le tableau de résultat en bas de ma page et c'est ce tableau de résultat que je désire paginer !
    J'ai tenté dans mon controller, de faire $this->paginate($query); avant de renvoyer mes données à ma fonction ajax mais dans ce cas j'obtiens un affichage des 20 premiers résultats seulement soit pour le premier onglet seulement ( la page 1 ).

    Lorsque je clique sur les pages suivantes de mon paginate, il n'y a pas de données alors qu'il devrait y en avoir, je cherche un moyen de faire marcher le paginate sachant que je passe par un appel ajax...

    N'hésite pas à me dire si ce n'est pas clair !
    Merci !

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    parmis les fonctions de Ajax, il y a la fonction "complete" que tu peut ajouter aprés la fonction success comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sucess:function(tab){....} , complete: function (tab) {/*ici tu met l'instruction de ta pagination */},......
    puis le mot clé $this , ça signifie quoi? l'id de ton tableau que tu veux paginer ?

Discussions similaires

  1. [CakePHP] Problème URL Ajax CakePHP 3.0
    Par L_air dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 04/05/2015, 18h39
  2. [CakePHP] Problème de pagination AJAX
    Par zakid dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 08/11/2014, 12h46
  3. [AJAX] Cakephp Ajax pagination search and refresh
    Par lefebvresdesigns dans le forum jQuery
    Réponses: 2
    Dernier message: 31/05/2013, 21h56
  4. Pagination Ajax non intrusive
    Par Delprog dans le forum jQuery
    Réponses: 2
    Dernier message: 28/07/2010, 13h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo