Problème de condition dans twig [Résolu]

Signaler
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020
-
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020
-
Bonjour,

Quelqu'un pourrait m'expliquer pourquoi mon else me repete 9 fois le nom et le prenom alors que la premiere condition lorsqu'elle est rempli me mets juste une fois le nom et le prenom ? Cela fait 2 heures que je suis dessus et je ne trouve pas de logique. J'ai simplifié la boucle expres pour que se soit plus clair.


<table class="table table-hover">
     <thead>
      <tr>
       
       <th class="text-center">Nom</th>
       <th class="text-center">Email</th>
       <th class="text-center">Catégorie</th>
       <th class="text-center">Licence</th>
       
       
       <th></th>
      </tr>
     </thead>
     <tbody>
     
                             {% for ad in pagination.data %}
 
      
   {% for cat in catadherent %}
          {% if (cat.title is same as(ad.subcategory)) %}
   <td class="text-center">{{ad.lastName}} {{ad.firstName}}</td>
      {% else %}
       
        <td>{{ad.lastName}} {{ad.firstName}}</td>
                            {% endif %}
       {% endfor %} 
       <td class="text-center">{{ad.email}}</td>
       <td class="text-center">{{ad.subcategory}}</td>
       <td class="text-center">
        <span class="">{{ad.toNumber}}</span>

       </td>
      
       <td>

.....
        

mon controller:
public function index(CategoryAdherentRepository $repo,$page, PaginationService $pagination)
    {
        
        $pagination->setEntityClass(Adherent::class)
            ->setPage($page);

            $repo = $this->getDoctrine()->getRepository(CategoryAdherent::class);
        $catadherent = $repo->findAll();
        $repo2 = $this->getDoctrine()->getRepository(Team::class);
        $team1 = $repo2->findAll();
        

        return $this->render('/admin/adherent/index.html.twig', [
            'pagination' => $pagination,
            'catadherent'  => $catadherent,
            'team1' => $team1
        ]);



EDIT : Correction des balises de code ( Ajout du LANGAGE .... ENCORE !!! )

ma table:


le resultat:


merci pour votre aide.
Configuration: Windows / Chrome 84.0.4147.135

6 réponses

Messages postés
12418
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 octobre 2020
697
bonjour, as-tu essayé de supprimer le else?
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020

Merci de ta réponse, Mais si je le lève j'ai le nom a deux reprise.
Messages postés
12418
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 octobre 2020
697
2 c'est mieux que 9, non?
as-tu essayé d'également enlever la ligne entre le else et le endif?
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020
>
Messages postés
12418
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 octobre 2020

Non j'en ai besoins , en fait l'idée c'est de donner une couleur differente selon si l'adherent a payé sa cotisation ou pas.
en fait c'est la boucle de la variable catadherent qui me pose souci car en fait mon firstName boucle sur le nombre de catégories.
Est il possible dans mon else de lui dire d'arreter la boucle a la premiere entrée?
Messages postés
12418
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 octobre 2020
697 >
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020

tu fais cette boucle uniquement pour ajouter, ou pas,
class="text-center"
?
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020

Oui , je vais rajouter une class pour modifier la couleur.
Messages postés
12418
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 octobre 2020
697
il me semble alors que tu peux simplement déplacer hors de la boucle le texte qui doit toujours s'afficher, et en ne laissant dans la boucle que le texte variable.
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020

C'est le meme texte avec des couleurs differentes.
Si je laisse le texte hors de la boucle il s'affichera tout le temps en noir par exemple et s'ajoutera au meme texte en rouge s'il n'a pas payé sa cotisation.
Messages postés
12418
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 octobre 2020
697
il me semble que tu veux afficher soit
<td class="text-center">{{ad.lastName}} {{ad.firstName}}</td>

soit
<td>{{ad.lastName}} {{ad.firstName}}</td>

je me trompe?
ne vois -tu pas qu'une partie du texte doit toujours s'afficher, tandis qu'une autre partie ne s'affichera que dans certains cas?
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020

Dans tous les cas {{ad.lastName}} {{ad.firstName}} doivent s'afficher. Dans ce cas ils seront dans un cas centré et dans l'autre non.
Messages postés
12418
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
1 octobre 2020
697
tu veux toujours envoyer
<td

parfois tu veux envoyer
 class="text-center"

et ensuite tu veux toujours envoyer
>{{ad.lastName}} {{ad.firstName}}</td>


donc je suggère de sortir de la boucle for les éléments que tu veux toujours envoyer, et de n'y laisser que l'élément que tu veux parfois envoyer.
Messages postés
60
Date d'inscription
mardi 26 décembre 2017
Statut
Membre
Dernière intervention
24 août 2020

Ok désolé je comprend.
C'a marche je te remercie beaucoup j'étais entrain de péter un cable.:)