Bonjour , je suis bloqué sur un problème depuis maintenant 2 Semaines .
Je vous explique .
J'ai , dans mon problème plusieurs fichiers.
Pour commencer j'ai ce tableau , ou dans chaque ligne il y a une checkBox . Chaque ligne correspond a un fichier , et mon objectif est de cliqué sur des checkBox et de cliquer sur un bouton Tout Télécharger. Je ne peux faire un formulaire comprenant le tableau entier car pour chaque ligne du tableau il y a déjà un formulaire sur le Bouton "Supprimer" pour corriger la faille crsf.
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
64
65
66
67
68
69
70
71 <table id="searchTable" class="table-responsive"> <thead> <th></th> <th class="col-md-2">Nom du document</th> <th class="col-md-1">Type de document</th> <th class="col-md-1">Date de création</th> <th class="col-md-1">Télécharger</th> <th class="col-md-2">Actions</th> </thead> <tbody> {% for file in files %} {% set path = ico_exist(file) %} <tr> <td class="col-md-1"><input type="checkbox" class="files" id="{{ file.id }}"></td> <td>{{ file.name }}</td> <td>{{ file.doctype.name }}</td> <td>{{ file.date.format('Y-m-d')}}</td> <td class="col-md-1"><a href="{{ path('sa_platform_file_download',{'id':file.id}) }}"><img src="{{ asset(path) }}" class="ico"/></a></td> <td> <button onclick="location.href='{{ path('sa_platform_file_view', {'id':file.id, 'date':file.date.format('YmdHis'), 'ext':file.ext}) }}'" class="col-md-4" > <span class="glyphicon glyphicon-eye-open color-blue"></span> </button> <button onclick="location.href='{{ path('sa_platform_file_edit',{'id':file.id}) }}'" class="col-md-4"> <span class="glyphicon glyphicon-edit color-green"></span> </button> {% if is_granted('ROLE_BUSINESS') %} {{ form_start(file.validForm,{'attr':{'action':path('sa_platform_file_remove',{'id':file.id})}}) }} <button type="submit" class="col-md-4" onclick="return confirm('Etes vous sur de vouloir supprimer le fichier?');"> <span class="glyphicon glyphicon-remove color-red"></span> </button> {{ form_end(file.validForm) }} {% endif %} </td> </tr> {% endfor %} </tbody> </table> <button id="down">Down</button>
Ensuite , j'ai ce script là , qui gère l'appuis du bouton et récupère les Checkbox pour mettre leur valeur dans un Array.
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 /** * Created by santanas on 19/10/16. */ $(document).ready(function(){ $('#down').on('click', function(){ var sel=[]; $(".files:checked").each( function(){ sel.push( $(this).attr('id') ); }); console.log(sel); $.post(downloadPath,{'files[]':sel }); }); });
Puis le controlleur , comme vous le verrez j'ai mis certaines lignes en commentaire , ceci étant pour faire des tests. Pour l'instant , avant toute chose je voudrait que lorsque je clique sur le bouton tous les fichiers se téléchargent. Le seul problème , c'est que lorsque (en phase test) je vais sur la route qui actionne le controlleur , le téléchargement se fait bien , mais lorsque je clique sur le bouton dans ma page "index" , symfony appelle bien le controlleur avec Post et tout a l'air de bien se passer mais , rien ne se passe ,aucun téléchargement n'est lancé.
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 public function groupedDownloadAction(Request $request) { //$files_id = $request->request->get('files'); $files = $this->getDoctrine()->getRepository('SAPlatformBundle:File')->findAll(); /* foreach ($files_id as $id) { $files[] = $this->getDoctrine()->getRepository('SAPlatformBundle:File')->find($id); }*/ $webdir = $this->get('kernel')->getRootDir().'/../web/tmpFile/'; $date = new \DateTime; $zip_name = $webdir.$date->format('YmdHis').'.zip'; $zip = new \ZipArchive(); $zip->open($zip_name,\ZipArchive::CREATE); foreach ($files as $file) { $file->setPath(); $zip->addFile($file->getPath()); } $zip->close(); //Download header('Content-Type: application/zip'); header('Content-disposition: attachment; filename='.$zip_name); header('Content-Length: ' . filesize($zip_name)); readfile($zip_name); return $this->redirectToRoute('sa_platform_index'); }
Alors, est-ce que j'ai fait le bon choix sur ma façon de faire? Y a il une autre façon de faire la même chose de façon plus optimisée? Que faire ? Je suis bloqué et cela me rend fou !
Merci d'avance les amis.
Partager