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

Symfony PHP Discussion :

[Symfony 2.6] Trier les colonnes des tableaux TWIG


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 79
    Points : 43
    Points
    43
    Par défaut [Symfony 2.6] Trier les colonnes des tableaux TWIG
    Bonjour,

    J'affiche dans un tableau la liste des clients.
    L'idée est de pouvoir rendre les colonnes sortable lorsque je clique sur le nom de la colonne. Premier clic, tri en ASC, second clic tri en DESC.
    Le coup classique donc.

    J'ai essayé avec la méthode "sylius_resource_sort" dans les noms de mes colonnes dans ma vue. (SyliusResourcesBundle)
    J'ai bien configuré ma route avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    xxxxx_meeting_meeting_index:
        pattern: /
        defaults:
            _controller:xxxxxMeetingBundle:Meeting:index
            sortable: true
    et mon fichier de config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sylius_resource:
        resources:
            xxxx.meeting:
                driver: doctrine/orm
                templates:  xxxxMeetingBundle:Meeting
                classes:
                    model:  xxxx\MeetingBundle\Entity\Meeting
                    controller:  xxxx\MeetingBundle\Controller\MeetingController
    Les colonnes de mon tableau sont maintenant bien cliquable, premier clique et dans la barre d’adresse vient s'ajouter ?sorting%5Bname%5D=asc.
    Second clic ?sorting%5Bname%5D=desc

    Super, mais lorsque la page se rafraîchis les colonnes ne sont pas triées ! Dans l'URL c'est ok, pas pour l'affichage.

    Une solution ? Autre que Sylius ? Troll ? =)

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    HUGH !!


    si ce n'est qu'une liste de client utilise https://github.com/KnpLabs/KnpPaginatorBundle

    c'est très simple à mettre en place

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Mais oui bien sur !
    En plus j'utilise déjà knp_paginator pour gérer la pagination....
    J'avais oublié qu'il faisait le tri sur les colonnes.

    Merci dukoid, encore une fois

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 79
    Points : 43
    Points
    43
    Par défaut
    Enfin facile facile....

    J'ai ceci dans l'indexAction
    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
                public function indexAction(Request $request)
        {
            $em = $this->getDoctrine()->getManager();
     
            $customers = $em->getRepository('StanhomeRhBundle:Customer')->findBy(array('user' => $this->get('security.token_storage')->getToken()->getUser()));
     
            $paginator = $this->get('knp_paginator');
            $pagination = $paginator->paginate(
                $customers,
                $request->query->get('page', 1),
                10
            );
     
            return array(
                'pagination' => $pagination,
            );
        }
    Et là vue:
    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
    36
                     <table id="tableShipping" class="table table-hover table-responsive table-striped table-bordered">
                            <thead>
                            <tr>
                                <th>{{ knp_pagination_sortable(pagination, 'Sexe', 'customers.sexe') }}</th>
                                <th{% if pagination.isSorted('customers.nom') %} class="sorted"{% endif %}>{{ knp_pagination_sortable(pagination, 'Nom', 'customers.nom') }}</th>
                                {#<th class="col-md-2">{{ sylius_resource_sort('name', 'StanhomeRhBundle.customers.page_index.sexe'|trans) }}</th>#}
                                <th class="col-md-2">{{ 'StanhomeRhBundle.customers.page_index.lastName'|trans }}</th>
                                <th class="col-md-2">{{ 'StanhomeRhBundle.customers.page_index.fixe'|trans }}</th>
                                <th class="col-md-2">{{ 'StanhomeRhBundle.customers.page_index.mobile'|trans }}</th>
                                <th class="col-md-2">{{ 'StanhomeRhBundle.customers.page_index.email'|trans }}</th>
                                <th>{{ 'StanhomeRhBundle.customers.page_index.modify'|trans }}</th>
                                {#<th>{{ sylius_resource_sort('name', 'StanhomeRhBundle.customers.page_index.delete'|trans) }}</th>#}
                            </tr>
                            </thead>
                            <tbody>
                            {% for customer in pagination %}
                                <tr>
                                    <td> {{ customer.sexe }}</td>
                                    <td>
                                        <div class="checkbox left">
                                            <input type="checkbox" class="flat-checkbox-1 check">
                                        </div>
                                        <a href="{{ path('stanhome_rh_customer_show', { 'id': customer.id }) }}">{{ customer.nom }}</a>
                                    </td>
                                    <td> {{ customer.prenom }}</td>
                                    <td> {{ customer.fixe }}</td>
                                    <td> {{ customer.portable }}</td>
                                    <td> <a href="mailto:{{ customer.email }}">{{ customer.email }}</a></td>
                                    <input type='hidden' name='_method' value='PUT'>
                                    <td class="center"><a href="{{ path('stanhome_rh_customer_edit', { 'id': customer.id }) }}"><i class="icon-pencil2"></i></a></td>
                                    {#<input type='hidden' name='_method' value='DELETE'>#}
                                    {#<td class="center"><a href="{{ path('stanhome_rh_customer_delete', { 'id': customer.id }) }}"><i class="icon-pencil2"></i></a></td>#}
                                </tr>
                            {% endfor %}
                            </tbody>
                        </table>
    Seulement le tri sur les customers, ok dans l'url nada sur l'affichage.

Discussions similaires

  1. DataGrid Trier les entêtes des colonnes
    Par rvzip64 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 19/10/2011, 15h41
  2. Réponses: 6
    Dernier message: 08/07/2011, 16h22
  3. [Conception] Utiliser les fonctions des tableaux ou plusieurs requêtes ?
    Par Derik dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 01/02/2006, 09h54
  4. Trier les colonnes d'une zone de liste
    Par ancylia dans le forum Access
    Réponses: 8
    Dernier message: 24/10/2005, 14h08
  5. [VBA] Trier les colonnes d'une listview
    Par alncool dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/09/2005, 14h12

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