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

Laravel PHP Discussion :

Tri et paginate [4.2]


Sujet :

Laravel PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Tri et paginate
    Bonjour,

    Je suis en train de faire un système de tri par différents critères pour des pages produits (+ haut pris, + bas prix, derniers ajouts), et comme je n'affiche que 12 éléments par page, je me sers de ce magnifique outils de laravel qu'est Paginate.

    Donc : voici le select qui me permet de faire le choix pour la méthode de tri :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {{ Form::open(array('url' => 'cat/'.$categ->lienCat.'/tri', 'method'=>'get')) }}
                        <select onchange='this.form.submit()' name='tri'>
                            <option value=0>--Sélectionnez un critère--</option>
                            <option value=1>Prix croissants</option>
                            <option value=2>Prix décroissants</option>
                            <option value=3>Derniers ajouts</options>
                        </select>
                        {{Form::close()}}
    Ma route :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Route::get('cat/{slug}/tri', 'CategController@triCateg');
    Ma fonction :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public function triCateg($slug)
        {
            $categ=Categorie::where('lienCat', '=', $slug)->first();
     
            $subcat = $categ->categs;
     
            switch (Input::get('tri'))
            {
                case 1:
                    $prod=$categ->prods()->where('afficher','=','1')->orderBy('prixref', 'asc')->paginate(12);
                    break;
                case 2:
                    $prod=$categ->prods()->where('afficher','=','1')->orderBy('prixref', 'desc')->paginate(12);
                    break;
                case 3:
                    $prod=$categ->prods()->where('afficher','=','1')->orderBy('id', 'desc')->paginate(12);
                    break;
                case 0:
                    $prod=$categ->prods()->where('afficher','=','1')->paginate(12);
                    break;
            }
     
            $title = $categ->nom_cat;
            // foreach($categ->prods as $p){
                    // $prod->add($p);
                // }
            //
            // $prod->paginate(12);
            if($categ->rid_cat==0){
                return View::make('categ/categ')->with('categ', $categ)->with('prod', $prod)->with('subcat', $subcat)->with('title', $title);
            }
            else{
                return View::make('categ/subcateg')->with('categ', $categ)->with('prod', $prod)->with('subcat', $subcat)->with('title', $title);
            }
        }
    Le soucis, c'est que le tri marche magnifiquement bien pour la première page, mais dès que je passe sur la page 2, ça m'envoie en enfer. Ca doit sans doute avoir à faire avec le GET, mais je ne vois pas comment faire. Si vous avez une idée, je suis preneuse.

    Merci d'avoir pris le temps de lire, et encore un plus grand merci si vous parvenez à m'aiguiller sur une solution

    EDIT : Voici l'URL quand je choisis mon critère de tri :
    /cat/$slug/tri?tri=1
    Et l'URL quand je change de page :
    /cat/$slug/tri?page=2
    Donc la page 2 fait sauter le critère de tri vu que c'est en GET... Une idée pour que je le garde ?

  2. #2
    Membre à l'essai
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Points : 12
    Points
    12
    Par défaut
    Bon bah c'est bon, j'ai trouvé la solution.
    Donc, sur ma page où tout était affiché, il fallait que je mette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{$prod->appends(array('tri' => Input::get('tri')))->links();}}
    Ca marche parfaitement bien, et je pourrai le faire évoluer à l'avenir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DisplayTag] Tri et pagination ne font pas bon ménage
    Par tiboudchou dans le forum Taglibs
    Réponses: 4
    Dernier message: 31/03/2010, 12h22
  2. Gridview tri et pagination
    Par Ya7yaKech dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/05/2009, 19h06
  3. Tri et pagination
    Par Whombat dans le forum Langage
    Réponses: 4
    Dernier message: 01/02/2009, 04h48
  4. Tri et pagination myFaces
    Par maloups dans le forum JSF
    Réponses: 13
    Dernier message: 29/06/2007, 11h44
  5. Tri et pagination du datagrid qui ne marche pas
    Par paradeofphp dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/05/2007, 17h00

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