Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher le donné du 2ème tableau en twig

Tableau dans un tableau

Sujet résolu
    3 septembre 2021 à 15:20:48

    Bonjour à tous,

    Je dois créer une boucle qui récupère différentes donnée qui sont stockée dans deux tables différentes... Voila ma première boucle fonctionne mais après on n'arrive pas a rentrer dans le niveau en dessous.

    En gros j'ai deux tableaux:

    array:20 [▼
    (debut tableau 1)
     0 =>  ▼
        -id: 
        -debut: lundi 10 mars 11h00
        -fin: lundi 10 mars 14h00
        -type: 1
        -exploitant:
    (début tableau 2) 
          -cabinet: 
          -extId: 148
          -rank: 4
          -etat: 1
          -name: "martin"
          -slug: "martin"
          -description: "Necessitatibus nostrum aut aut suscipit. Et illo odit minima sequi.<br>Et illo architecto et ut. Libero eum aliquid animi omnis at praesentium molestias.
          -descriptionShort: "In quos molestiae eum aut optio."
          -gender: 1
          #id: Ramsey
          #createdAt: DateTime 
          #updatedAt: DateTime 
          #enabled: true
      }
    }
    
    

    Voici ce que je voudrais faire : 

    1.Si exploitant est au tableau 1

            a) Si il est de type 1

    • **** Si son état (qui est dans tableau 2) est dispo_tel alors dispo tel
    • **** Sinon si son état est en dispo_physique alors En  dispo  physique
    • **** sinon si son état est en  dispo_pause alors è En pause

           b) Sinon type 2  alors è Dispo mail

    2.Sinon exploitant infos indisponible

    Voila comment je l'ai traduit :

    {% for exploitant in tableau1|filter(e => e.debut|date('d-m-Y H:i') <= 'now'|date('d-m-Y H:i') and e.fin|date('d-m-Y H:i') >= 'now'|date('d-m-Y H:i')) %}
    	{% if exploitant.type == 1 %}
    		{% if exploitant.etat is same as(constant(' dispo_tel', exploitant)) %}
    			<h4 class="disponibilite infos-dispo text-center">DISPONIBLE AU TELEPHONE </h4>
    		{% elseif events[exploitant.etat] is same as(constant(' dispo_physique', exploitant)) %}
    			<h4 class="disponibilite infos-consult text-center">DISPONIBLE PHYSIQUEMENT </h4>
    		{% elseif events[exploitant.etat] is same as(constant('pause', exploitant)) %}
    			<h4 class="disponibilite infos-consult text-center">EN PAUSE </h4>
    		{% endif %}
    	{% else %}
    		<h4 class="disponibilite infos-dispo-mailtext-center">DISPONIBLE par mail</h4>
    	{% endif %}
    {% else %}
       <h4 class="disponibilite infos-indispo text-center">consulter mes plannings de voyance par téléphone </h4>
    {% endfor %}



    Mais quand je fais ça, il me dit "Neither the property 'etat' nor one of the methods 'etat()'".... Il n'arrive pas a reconnaitre ma propriété ETAT.... 
    J'ai trouvé des choses sur internet mais rien n'a fonctionné. Voici certains if que j'ai testé... : 

     {% if exploitant[exploitant.etat] is same as(constant(' dispo_tel', exploitant)) %}
     {% if tableau1[exploitant.etat] is same as(constant(' dispo_tel', exploitant)) %}
     {% if tableau1.exploitant[exploitant.etat] is same as(constant(' dispo_tel', exploitant)) %}



    J'ai aussi d'essayé mon code de cette manière : 

     {% for exploitant in tableau1|filter(e => e.debut|date('d-m-Y H:i') <= 'now'|date('d-m-Y H:i') and e.fin|date('d-m-Y H:i') >= 'now'|date('d-m-Y H:i')) %}
    	{% if exploitant in exploitant.id  %}
    		{% if exploitant.type == 1 %}
    			{% if exploitant.etat is same as(constant(' dispo_tel', exploitant)) %}
    				<h4 class="disponibilite infos-dispo text-center">DISPONIBLE AU TELEPHONE </h4>
    			{% elseif events[exploitant.etat] is same as(constant(' dispo_physique', exploitant)) %}
    				<h4 class="disponibilite infos-consult text-center">DISPONIBLE PHYSIQUEMENT </h4>
    			{% elseif events[exploitant.etat] is same as(constant('pause', exploitant)) %}
    				<h4 class="disponibilite infos-consult text-center">EN PAUSE </h4>
    			{% endif %}
    		{% else %}
    			<h4 class="disponibilite infos-dispo-mailtext-center">DISPONIBLE par mail</h4>
    		{% endif %}
    	{% endif %}
    {% else %}
       <h4 class="disponibilite infos-indispo text-center">consulter mes plannings de voyance par téléphone </h4>
    {% endfor %}

    Mais celà aussi n'a pas fonctionner....

    Auriez-vous une idée?

    -
    Edité par EsperanzaNi 3 septembre 2021 à 15:32:37

    • Partager sur Facebook
    • Partager sur Twitter
      3 septembre 2021 à 16:07:08

      Salut

      Je serais surpris que tu aies deux tableau au vu des # du "second", qui pour moi dénotent des propriétés d'objets protégées (protected) et les - des propriétés privées (private).

      De plus, tu as bien un tableau, mais tu ne boucles pas directement sur les exploitants mais sur ce que contient le premier niveau, ou alors il nous manque la première boucle qui doit être autour de celle que tu nous montres.

      En gros, tu boucles sur les ??? qui sont dans le tableau1 (niveau nom de variable parlant, on repassera), et ce ??? contient un exploitant qui lui possède un état. Donc la variable Twig exploitant ne représente absolument pas un exploitant, mais un de ces ??? inconnus.

      -
      Edité par Ymox 3 septembre 2021 à 23:27:17

      • Partager sur Facebook
      • Partager sur Twitter
        6 septembre 2021 à 11:15:19

        Merci pour ta réponse.

        Mais là je ne comprends pas comment faire mon code...

        Je voudrais juste arrivé à faire affiché mon ETAT une fois le TYPE choisit (car je peux avoir un Type = 1 ou Type =2 ou Type =3) puis en fonction du type je peux avoir différent état exemple :

        • TYPE=1 et ETAT=0 
        • ou TYPE=1 et ETAT=1
        • ou TYPE=1 et ETAT=2 
        • ou TYPE=2 et ETAT=0 
        • ou TYPE=2 et ETAT=1
        • ou TYPE=2 et ETAT=2...
        Donc, il faut d'abord que j'ai le TYPE et ensuite que j'ai l'ETAT. Mais sans avoir le TYPE je ne peut pas avoir l'ETAT...
        Des idées?

        Ymox a écrit:

        Salut

        Je serais surpris que tu aies deux tableau au vu des # du "second", qui pour moi dénotent des propriétés d'objets protégées (protected) et les - des propriétés privées (private).

        De plus, tu as bien un tableau, mais tu ne boucles pas directement sur les exploitants mais sur ce que contient le premier niveau, ou alors il nous manque la première boucle qui doit être autour de celle que tu nous montres.

        En gros, tu boucles sur les ??? qui sont dans le tableau1 (niveau nom de variable parlant, on repassera), et ce ??? contient un exploitant qui lui possède un état. Donc la variable Twig exploitant ne représente absolument pas un exploitant, mais un de ces ??? inconnus.

        -
        Edité par Ymox 3 septembre 2021 à 23:27:17



        • Partager sur Facebook
        • Partager sur Twitter
          6 septembre 2021 à 11:31:57

          Regarde vraiment ce que contient la variable exploitant avec ton code actuel, ce n'est pas ce que tu crois. Et la structure affichée devrait te permettre d'adapter.

          Sache que tu peux faire truc.chose.bidule en Twig au besoin, et probablement que là tu aurais besoin de faire exploitant.exploitant.etat.

          La ligne {% if exploitant in exploitant.id %} me surprend toujours : tu dis grosso modo "si une pomme est parmi un pépin de ladite pomme", je ne comprends pas vraiment comment un objet (qui n'est pas un exploitant à cet endroit) peut être dans son ID.

          Tu utilises Symfony, ou un autre outil avec Twig, ou du code que tu as fait toi-même ?

          • Partager sur Facebook
          • Partager sur Twitter
            23 septembre 2021 à 11:31:15

            Bonjour, désolée de répondre si tardivement.

            J'utilise Symfony. J'ai réussi avec le temps de réglé mon problème.

            Merci à vous d'avoir répondu car cela m'a aidé à comprendre mes erreurs.

            Bonne journée

            • Partager sur Facebook
            • Partager sur Twitter

            Afficher le donné du 2ème tableau en twig

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown