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 :

Les filtres, on aime ça, y en a encore [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Par défaut Les filtres, on aime ça, y en a encore
    Bonjour!
    J'ai en frontend un filtre et un pager. Très bien, ça roule.
    J'aimerai récupérer la totalité du résultat de mon filtre (donc sans pager) et le mettre dans un tableur (pour export ou impression).
    Comment peut-on se resservir de la requête du filtre dans executeExcel //My Query ?
    Mon action :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    class frcapActions extends sfActions {
     
        public function executeIndex(sfWebRequest $request) {
            //le filtre
            $this->formFilter = new FrcapFormFilter($this->getFilter());
            if ($request->isMethod('post')) {
                $this->formFilter->bind($request->getParameter($this->formFilter->getName()));
            }
            $query = $this->formFilter->buildQuery($this->getFilter());
     
            //le pager
            $this->pager = new sfDoctrinePager('Frcap', 10);
            $this->pager->setQuery($query);
            $this->pager->getQuery();
            $this->pager->setPage($this->getRequestParameter('page', 1));
            $this->pager->init();
        }
     
        public function executeFilter(sfWebRequest $request) {
            if ($request->hasParameter('_reset')) {
                $this->setFilter(array());
                $this->forward('frcap', 'index');
            }
            $this->formFilter = new FrcapFormFilter($this->getFilter());
            $this->formFilter->bind($request->getParameter($this->formFilter->getName()));
            $this->setFilter($this->formFilter->getValues());
            $this->forward('frcap', 'index');
            $this->setTemplate('index');
        }
     
        protected function buildQuery($q) {
            if (!isset($this->formfilter))
                $this->formfilter = $this->getFilter();
     
            $this->formfilter->setQuery($q);
            $query = $this->formFilter->buildQuery($this->getFilter());
            return $query->execute();
        }
     
        protected function getFilter() {
            return $this->getUser()->getAttribute('frcap.filter', array());
        }
     
        protected function setFilter(array $formFilter) {
            return $this->getUser()->setAttribute('frcap.filter', $formFilter);
        }
     
        public function executeExcel(sfWebRequest $request) {
            //Turn off the layout
            $this->setLayout(false);
     
            //My query
            $this->formFilter = new FrcapFormFilter($this->getFilter());
            $this->formFilter->bind($request->getParameter($this->formFilter->getName()));
            $query = $this->formFilter->buildQuery($this->getFilter());
            $this -> excels = Doctrine_Core::getTable('Frcap')->find($query);
     
            $this->setTemplate('excel');
     
            //Export the output in Excel 
            $this->getResponse()->setContentType('application/msexcel');
            $this->getResponse()->setHttpHeader('Content-Disposition', 'inline; filename="myfile.xls"');
        }
    ma vue excelSuccess
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php foreach ($excels as $excel): ?>
      <tr>
              <td><?php echo $excel->getId() ?></td>
              <td><?php echo $excel->getModel() ?></td>
     
      </tr>
    <?php endforeach; ?>
    Merci, je suis bloqué.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Bonjour,

    je n'ai pas regardé tout ton code : 6 méthodes, ça fait beaucoup.

    J'ai l'impression qu'il pourrait y avoir du refactoring à faire : tu fais des bind à l'executeIndex (qui est censé lister des éléments, du coup je ne vois pas trop le rapport) et à l'executeFilter (qui est censé filtrer tes données, et non pas binder les données entrées dans un formulaire).

    Ceci dit, si j'ai compris ta question, tu peux récupérer l'ensemble de ton résultat de requête après ton instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            $query = $this->formFilter->buildQuery($this->getFilter());
    simplement en faisant un :
    Corrige moi si j'ai mal compris ton problème

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Par défaut
    Cest si simple !!!!!!

    Tu as parfaitement:
    1 - compris ma question,
    2 - répondu à ma question,
    3 - vu que le réfractoring restait à faire (le module est à 90% terminé),
    4 - compris que j'étais "un burro (.CAT)".

    Merci pour ton aide.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Parfait !!

    Bon courage pour la suite alors.
    (qu'est ce qu'un burro .CAT ?)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Par défaut
    Un Burro (prononcer: bourrrrrrrro) en catalan signifie un âne, un bourricot.
    C'est d'ailleurs le symbole de ce si joli pays.
    Expression catalane : Català burro, Gabax porc.
    gabax (prononcer: gabatch) sont les habitants des pays de l'aude (de Carcasonne à Narbonne)
    Si tu as 2 secondes j'ai posté un autre point intéressant (donc bloquant...) sur les filtres : filtrer entre 2 valeurs...
    Je marque ce topic résolu.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    On a tous un côté burro donc

    Pas de problème, j'irai jeter un œil sur ton autre point bloquant quand tu l'auras posté.

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

Discussions similaires

  1. Les filtre ADO n'aime pas les espaces
    Par antoinelac dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/01/2009, 15h15
  2. Prendre en compte les espaces dans les filtres
    Par Ekinoks dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 03/11/2006, 02h57
  3. Réponses: 2
    Dernier message: 23/06/2006, 10h43
  4. Recupération d'information sur les filtres
    Par Alpha31 dans le forum Access
    Réponses: 2
    Dernier message: 16/06/2006, 22h35
  5. Delphi et Interbase > TIBDataSet et les filtres
    Par AlexB59 dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/10/2005, 00h31

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