Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 14h29   #1
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
Par défaut recuperer le filtre d'un admin generator pour action download

Bonjour,
je n'arrive pas trouver comment dans un module admin récuperer les données du filtre pour créer une action qui me listerai les data pour une impression ou un sauvegarde dans un fichier ?
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 17h33   #2
Membre habitué
 
Avatar de Nico_F
 
Homme Nicolas
Développeur Web
Inscription : avril 2011
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2011
Messages : 95
Points : 142
Points : 142
Les données du filtre de l'admin gen' sont contenues dans le sfUser :

Code :
1
2
attributeHolder:
  admin_module: nomDuModule.filters {...}
Il faut que ton filtre aie été appliqué (non-vide? -->pas complètement sûr) au moins une fois.

Tu devrais pouvoir les voir dans la debug toolbar.

Essaye voir ça :

Code :
1
2
$filterArray = $this->getUser()->getAttribute('nomDuModule.filters');
print_r($filterArray);
Nico_F est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/06/2011, 18h52   #3
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Juste pour plussoir sur Nico.

Quant tu récupères tu vérifies si le paramètre existe, si non tu utilise un array vierge.

Tu as intérêt à instancier ton filter qui a une méthode qui permet de récupérer le même query que celui utilisé par la liste de l'admin. Tu est ainsi sur d'avoir la même chose et tu n'as pas à te "peller les doigts" pour recréer une requête à l'identique.

Regarde dans le cache le code générer pour ton form d'admin, cela devrait te donner des idées..
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 16h45   #4
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
je comprend pas trop.
en faite dans mon fichier generator j'ai:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
config:
      actions: ~
      fields:  ~
      list:
        display: [group, value]
        object_actions:
          _edit: ~
        actions:
          listing: ~
        max_per_page: 10
      filter:
        display: [site,groupasset_id, value, actif]
      form:    ~
      edit:    ~
      new:     ~
je voudrait pouvoir dans l'action listing, récuperer, ou bien l'ensemble des object, ou bien les paramètres du filtres

EDIT:

en farfouillant j'ai trouver comment récupérer les valeurs des filtres:
Code :
1
2
3
4
5
 
public function executeListListing(sfWebRequest $request)
    {        
        var_dump($this->getFilters());
    }
me donne bien la liste des champs du filtre.
j'ai essaye de continuer avec ce que j'ai trouvé dans le cache:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public function executeListListing(sfWebRequest $request)
    {        
 
        $this->filters = $this->configuration->getFilterForm($this->getFilters());
 
             $this->filters->bind($request->getParameter($this->filters->getName()));
       if ($this->filters->isValid())
       {
           var_dump($this->filters->getValues());
       }
 
    }
malheureusement, je me retrouve avec un _csrf required au niveau du bind.
Quelqu'un a une idée ?
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 09h00   #5
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Citation:
malheureusement, je me retrouve avec un _csrf required au niveau du bind
Et ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 11h04   #6
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
bein ça plante

J'ai essayer une autre méthode, j'ai récupérer toute l'action index depuis le cache que j'ai mis dans mon action ListListing de même pour le fichier indexSuccess que j'ai recopié dans listListingSuccess.
ça me conserve bien le filtre.
J'ai nettoyé le fichier du bloc de filtre et des actions mais je n'arrive pas a supprimer la pagination

mon action:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function executeListListing(sfWebrequest $request)
    {
        // sorting
        if ($request->getParameter('sort') && $this->isValidSortColumn($request->getParameter('sort')))
        {
            $this->setSort(array($request->getParameter('sort'), $request->getParameter('sort_type')));
        }
 
        // pager
        if ($request->getParameter('page'))
        {
            $this->setPage($request->getParameter('page'));
        }
 
        $this->pager = $this->getPager();
        $this->sort = $this->getSort();
    }
la partie intéressante du template:
Code :
1
2
3
4
5
6
<div id="sf_admin_content">
    <form action="<?php echo url_for('pabx_collection', array('action' => 'batch')) ?>" method="post">
    <?php include_partial('pabx/listing', array('pager' => $pager, 'sort' => $sort, 'helper' => $helper)) ?>
 
    </form>
  </div>
et la partie du partial
Code :
1
2
3
4
5
6
7
8
<tbody>
        <?php foreach ($pager->getResults() as $i => $pabx): $odd = fmod(++$i, 2) ? 'odd' : 'even' ?>
          <tr class="sf_admin_row <?php echo $odd ?>">
 
            <?php include_partial('pabx/list_td_tabular', array('pabx' => $pabx)) ?>
          </tr>
        <?php endforeach; ?>
      </tbody>
comment outrepassé le pager ou alors le modifié à la volée pour qu'il affiche tout les enregistrements ?
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 16h31   #7
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Suis pas bon ces derniers jours.

Mais, si je repart à la question d'origine :
- les données du filtre sont stockée dans un tableau dans l'objet user. Tu peux donc facilement les récupérer.
- a partir de ces données et d'une instance de l'objet filtre tu peux simplement récupérer le query doctrine qui récupèrera tes données.

Je ne vois pas ce qu'un objet pager viendrait faire ici.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 15h45   #8
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
bein justement rien, je veut juste tout les enregistrements.

dans fichier generator.yml:
Code :
1
2
3
4
5
6
7
8
9
10
config:
      actions: ~
      fields:  ~
      list:
        display: [group, value]
        object_actions:
          _edit: ~
        actions:
          listing: ~
        max_per_page: 10
et si dans fichier action
je met
Code :
1
2
3
4
5
6
 
 
public function executeListListing{
$filterArray = $this->getUser()->getAttribute('nomDuModule.filters');
print_r($filterArray);
}
il n'affiche rien.
J'ai donc eu l'idée de recopier les fichiers autogénéré et de supprimer ce qui m'interressait pas, sauf que je bute au niveau du pager.
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 18h55   #9
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Essaye de générer un simple crud...

Tu auras alors tous les enregistrements.

L'auto-généré n'est pas réellement conçu pour être torturé ce cette façon. Surtout au niveau de la génération de l'index.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 23h01   #10
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
heuuu je veut tout les enregistrements suivant le filtre appliqué
c'est juste la pagination que je voudrait supprimmer
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 14h55   #11
Membre habitué
 
Inscription : juin 2006
Messages : 488
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 488
Points : 116
Points : 116
Citation:
Envoyé par Michel Rotta Voir le message
Suis pas bon ces derniers jours.

Mais, si je repart à la question d'origine :
- les données du filtre sont stockée dans un tableau dans l'objet user. Tu peux donc facilement les récupérer.
- a partir de ces données et d'une instance de l'objet filtre tu peux simplement récupérer le query doctrine qui récupèrera tes données.
j'ai bien trouver la méthode pour récupérer les valeurs du filtre:
j'ai donc instancié un objet filter avec ces valeurs:
Code :
1
2
 
$this->filters= new nomdumoduleFormFilter($this->getFilters();
ce que je ne trouve pas c'est comment récupérer la query doctrine qui récupérera mes données !!
erictomcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h54.


 
 
 
 
Partenaires

Hébergement Web