Bonjour,
On dit que les majorités des projets dépendent l'utilisation de JS (je suis débutante en l'utilisation JS) pour certains fonctionnalités.
Alors dans mon projet ( j'utilise la technologie SF 2.7), j'ai affiché mes données d'aprés ma BD dans un tableau en attribuant avec chaque ligne un bouton "checkbox" et un bouton "checkAll" qui se trouve en header de tableau pour séléctionner tous mes lignes de données.
D'aprés la rechercher sur google, j'ai obtenu la 1ére fonctionnent de checkAll c'est-a-dire lorsque je clique sur le bouton "checkAll" tous les tres boutons seront séléctionné.
La seul probléme qui'il reste c'est comment récupérer et envoyer les ids (je parle de la value du checkbox) vers ma route "deleteALL"
par exemple si j'ai sélectionné deux bontons donc je dois avoir deux ids pour la supression.

Ma code en html:

Entourez votre code pour bien le mettre en forme

<!-- menu dropdown-->
<form id="deleteAll" method="post" action="{{ path('deleteAll') }}">
   <strong >
       <i class="fa fa-trash" ></i> Supprimer
           </strong>                         
<!-- ./menu dropdown -->

<!-- un tableau des données récupérées daprés la BD -->
<table id="datatable" class="table table-hover">
             <thead>
                    <tr>
                            <th>
                            <input type="checkbox" id="checkAll"/> <!-- ici le bouton checkAll-->
                               </th>
                                    <th>
                                        Titre Du Projet
                                    </th>
                                    <th>
                                        Date D'ajout
                                    </th>
                                    <th>
                                        Date De Modification
                                    </th>
                                </tr>
          </thead>
  <tbody>
{% for entity in entities %}

                                        <tr class="gradeC">
                                            <td>
                                                <input type="checkbox" id="d" name="check[]" value="{{ entity.id}}"/> <!-- ici les diferrents ids des projets qui seront envoyé ver ma route "deleteAll"-->
                                                </form>
                                               </td>
                                            <td>
                                                <strong>{{ entity.nomProjet }}</strong>
                                            </td>
                                           <td>
                                               <strong>{{ entity.dateAjoutPro |date('d-m-Y') }} </strong>
                                               </td>
                                           <td>
                                                   <strong>{{ entity.dateModificationPro | date('d-m-Y H:i:s') }}                                            </strong>
                                           </td>
                                        </tr>

                        {%  endfor %}

</tbody>

 </table>

-Mon code Jquery:

   <script>
   $(document).readyfunction(){
               $("#checkAll").click(function(){
        var checked_status = this.checked;

            $("input[name='check[]']").each(function(){

                this.checked = checked_status;
                var v = $("#d").val();

                $('#deleteAll').on('submit', function (e){ // le probléme ici n'est pas fonctionnelle
                    e.preventDefault();
                    actiondesubsitution();
                });
            });

        });
    });
</script>

-Code de mon action: je suis entrain de tester la récupération des valeurs:

  public fuction deleteAllAction(Request $request){
  $ids = $request->request->get('check');
     var_dump(ids); 
    return $this->redirect($this->generateUrl('index'));
}

Pouvez-vous m'aider svp? Je suis débutante en Jquery.

7 réponses


Lartak
Réponse acceptée

Bonjour.
Il y a plusieurs choses qui ne vont pas.
La première est ce que dit Advancid, tu fermes ton formulaire au mauvais endroit, comme en plus tu le ferme dans une boucle, tu auras plus de fermetures de formulaire que tu n'en ouvre.
Ensuite, tu définis la même valeur d'attribut id à plusieurs éléments HTML, alors qu'un id est censé être unique.
Pour finir, au niveau du javascript c'est peut-être une erreur de copie de ton code original, mais tu as $(document).readyfunction(){ au lieu de $(document).ready(function(){ et si tu veux simuler la soumission du formulaire ou si tu préfère soumettre manuellement la soumission de celui-ci via jQuery, si je ne me trompe pas, il te faut utiliser la méthode trigger, soit $('#deleteAll').trigger('submit', function (e){ au lieu de $('#deleteAll').on('submit', function (e){.

emile01
Auteur

Merci lartak, il fait la redirection vers ma route "deleteAll". seulement le probléme qui reste la récupération des id. il affiche Null, je fais le test au niveau mon controleur :

 public fuction deleteAllAction(Request $request){
      $ids = $request->request->get('check');
         var_dump(ids); //affiche null
        return $this->redirect($this->generateUrl('index'));
    }

est-ce que la récupération des valeurs en Jquery se fait avec la fonction " v = $("#d").val();"

seulement le probléme qui reste la récupération des id. il affiche Null

Ton formulaire à la méthode post, alors que si je ne me trompe pas, tu essaies de récupérer des données qui seraient passées en getvia l'URL.

est-ce que la récupération des valeurs en Jquery se fait avec la fonction " v = $("#d").val();"

Comme je te l'ai dit, cette partie est fausse, tu peux pas définir la même valeur à l'attribut id dans plusieurs éléments HTML de la même page.
Et puis dans ton code javascript, tu fais appel à la fonction actiondesubsitution, sauf que nous ne savons pas ce qu'elle fait, je vois donc mal comment nous pouvons t'aider plus actuellement.

Sinon, c'est normal que idsvaux NULL, il te faut remplacer var_dump(ids) par var_dump($ids).

Salut,

il me semble que ta balise fermante </form> est mal placée. Je n'en suis pas sur, c'est tellement mal présenté.

emile01
Auteur

Merci pour vos aides le probléme est résolu en suivant vos conseils et en ajoutant un bouton submit pour assurer l'envoi des ids. :)

emile01
Auteur

Juste pour l'information Lartak, si je mis var_dump(ids) et non pas var_dump($ids). Donc le compilateur va géré un erreur syntaxique et il n'affiche pas NULL.