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 ?
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 ?
Les données du filtre de l'admin gen' sont contenues dans le sfUser :
Il faut que ton filtre aie été appliqué (non-vide? -->pas complètement sûr) au moins une fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 attributeHolder: admin_module: nomDuModule.filters {...}
Tu devrais pouvoir les voir dans la debug toolbar.
Essaye voir ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $filterArray = $this->getUser()->getAttribute('nomDuModule.filters'); print_r($filterArray);
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..
je comprend pas trop.
en faite dans mon fichier generator j'ai:
je voudrait pouvoir dans l'action listing, récuperer, ou bien l'ensemble des object, ou bien les paramètres du filtres
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 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: ~
EDIT:
en farfouillant j'ai trouver comment récupérer les valeurs des filtres:
me donne bien la liste des champs du filtre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public function executeListListing(sfWebRequest $request) { var_dump($this->getFilters()); }
j'ai essaye de continuer avec ce que j'ai trouvé dans le cache:
malheureusement, je me retrouve avec un _csrf required au niveau du bind.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()); } }
Quelqu'un a une idée ?
Et ?malheureusement, je me retrouve avec un _csrf required au niveau du bind
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:
la partie intéressante du template:
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 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(); }
et la partie du partial
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
comment outrepassé le pager ou alors le modifié à la volée pour qu'il affiche tout les enregistrements ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Partager