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 :

[SonataAdmin] Permettre le tri des listes avec des champs vituels


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 18
    Points
    18
    Par défaut [SonataAdmin] Permettre le tri des listes avec des champs vituels
    Bonjour,

    Dans une de mes listes j'aimerai pouvoir trier des champs faisant appels à des méthodes de mon entité, par exemple :

    Pour une entité Company:

    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
     
    /**
    * @ORM\OneToMany(targetEntity="Purchase", mappedBy="company")
    */
    private $purchases;
     
    public function getPurchases()
    {
        return $this->purchases;
    }
     
    public function getNbPurchases()
    {
        return $this->getPurchases()->count();
    }
     
    public function getQuota()
    {
        $quota = 0;
        $purchases = $this->getPurchases();
     
        foreach ($purchases as $purchase) {
            $quota += $purchase->getPack()->getQuota();
        }
     
        return $quota;
    }
    Dans la liste des entreprise je peux afficher le résultat de ces méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->add('nbPurchases', 'integer', array(
                'label' => 'Nombre d\'achat',
            ))
            ->add('quota', 'integer', array(
                'label' => 'Quota',
            ))
    J'aimerai donner la possibilité à l'utilisateur de trier et filtrer la liste en fonction du nombre d'achat et du quota.
    Pour le tri je n'ai rien trouvé ........ impossible d'utiliser 'sortable' => true (nbPurchases et quota ne sont pas des attributs de l'entité company)
    Pour le filtre j'ai réussi à créer un filtre pour nbPurchases en utilisant doctrine_orm_callback :

    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
     
    ->add('nbPurchases', 'doctrine_orm_callback', array(
        'label' => 'Nombre d\'achat',
        'callback' => function($queryBuilder, $alias, $field, $value) {
            if (!$value || !isset($value['value']) || !isset($value['value']['type']) || !$value['value']['type']) {
                return;
            }
     
            $operators = array(
                NumberType::TYPE_EQUAL            => '=',
                NumberType::TYPE_GREATER_EQUAL    => '>=',
                NumberType::TYPE_GREATER_THAN     => '>',
                NumberType::TYPE_LESS_EQUAL       => '<=',
                NumberType::TYPE_LESS_THAN        => '<',
            );
     
            $operator = $operators[$value['value']['type']];
     
            $queryBuilder->andWhere('SIZE('.$alias.'.purchases) '.$operator.' :size');
            $queryBuilder->setParameter('size', $value['value']['value']);
        },
        'field_type' => 'sonata_type_filter_number',
    ))
    Par contre pour le quota je n'ai pas réussi avec cette méthode : quota n'est pas un attribut de l'entité company.

    Quelqu'un sait-il comment trier et filtrer des champs virtuels avec sonata admin ?
    Merci.

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Jura (Franche Comté)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 29
    Points : 41
    Points
    41
    Par défaut
    Salut a toi !

    Je suis désolé si je remonte ce vieux fil après presque 1 ans sans actualisations.
    J'ai actuellement le même problème que toi, et je voudrais savoir si tu as trouvé une solution a ce problème.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Bonjour allchimiste,

    Je n'ai malheureusement pas de réponse à t'apporter ... il me semble que j'avais du mettre ça de coté
    Tu trouveras peut-être la solution en demandant directement aux dev sur github.

Discussions similaires

  1. Parser un JSON avec des variables avec des "-" et des ":"
    Par Quentin33 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 22/05/2011, 02h04
  2. Réponses: 4
    Dernier message: 02/04/2008, 18h51
  3. Créer des listes dans des listes
    Par engine dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2008, 12h53
  4. Problème avec des listes et des variables
    Par Knuckles dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2006, 19h24
  5. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 14h45

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