Problème de condition dans twig

Résolu
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

  1. Contributeur Ambassadeur
    bonjour, as-tu essayé de supprimer le else?
    0
    1. Merci de ta réponse, Mais si je le lève j'ai le nom a deux reprise.
      0
      1. Contributeur Ambassadeur
        2 c'est mieux que 9, non?
        as-tu essayé d'également enlever la ligne entre le else et le endif?
        0
      2. @yg_beNon 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?
        0
      3. Contributeur Ambassadeur
        @europe21tu fais cette boucle uniquement pour ajouter, ou pas,
        class="text-center"
        ?
        0
    2. Oui , je vais rajouter une class pour modifier la couleur.
      0
      1. Contributeur Ambassadeur
        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.
        0
    3. 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.
      0
      1. Contributeur Ambassadeur
        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?
        0
    4. 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.
      0
      1. Contributeur Ambassadeur
        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.
        0
    5. Ok désolé je comprend.
      C'a marche je te remercie beaucoup j'étais entrain de péter un cable.:)
      0