IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[Symfony 4] Gestion des images & boucle while dans Twig


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Charvalos
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2010
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2010
    Messages : 353
    Points : 1 264
    Points
    1 264
    Par défaut [Symfony 4] Gestion des images & boucle while dans Twig
    Bonjour à tous !

    Et oui, c'est encore moi. Si je viens vers vous aujourd'hui, c'est pour des questions de pratiques auxquelles je n'ai pas trouvé mes réponses sur Internet (ou alors, j'ai mal cherché).

    En premier lieu, j'aimerais savoir comment gérer les images avec les assets. J'ai trois images dans sous /assets/img/ : free_seat.png, reserved_seat.png et selected_seat.png. J'ai ensuite rajouté ceci dans le webpack.config.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .addEntry('free_seat', './assets/img/free_seat.png')
    .addEntry('reserved_seat', './assets/img/reserved_seat.png')
    .addEntry('selected_seat', './assets/img/selected_seat.png')
    La compilation fonctionne bien mais le problème est que dans mon dossier public/build, j'ai un dossier image et dedans, j'ai des noms du genre free_seat.ea2bc3e2.png et en cherchant sur Internet, je suis tombé sur ça. Je l'ai fait et tout fonctionne, j'arrive à charger les images rien qu'en mettant le nom, par exemple, free_seat.png.
    Là où cela se corse, c'est au niveau du JS.

    En gros, l'utilisateur arrive sur une page de réservation où il peut sélectionner des sièges libres pour les réserver et avec JQuery, quand il clique sur le siège, l'image change et le siège devient "selected". Le problème vient du fait que pour prendre l'image, je suis obligé de prendre le nom avec cet espèce de hash :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (this).attr('src', 'build/images/free_seat.ea2bc3e2.png');
    D'où ma question : est-il possible d'utiliser, comme dans Twig, une sorte de fonction asset pour charger les images dans le JS ? Et est-ce qu'il est possible d'ajouter directement un dossier au lieu de chaque fois faire addEntry pour chaque image ?




    Ensuite, deuxième point sur lequel je bloque, toujours en rapport avec cet espace de réservation en ce qui concerne l'affichage des sièges. Pour faire court, les sièges sont stockés dans une BDD avec son rang et son numéro et une clé étrangère liée à la table user permettant de savoir si le siège est libre ou pas.

    Voici le code de la vue :

    Code twig : 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
    {% extends 'base.html.twig' %}
    {% block body %}
        <div class="row">
            {% for seat in seats if seat.rank == 'A' %}
                <div class="col">
                    {% if seat.user is null %}
                        <a href="#" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}">
                            <img class="img-fluid seat" src="{{ asset('build/images/free_seat.png') }}" rel="siège non réservé" />
                        </a>
                    {% else %}
                        <img class="img-fluid" src="{{ asset('build/images/reserved_seat.png') }}" rel="siège non réservé" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}" />
                    {% endif %}
                </div>
            {% endfor %}
        </div>
        <div class="row">
            {% for seat in seats if seat.rank == 'B' %}
                <div class="col">
                    {% if seat.user is null %}
                        <a href="#" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}">
                            <img class="img-fluid seat" src="{{ asset('build/images/free_seat.png') }}" rel="siège non réservé" />
                        </a>
                    {% else %}
                        <img class="img-fluid" src="{{ asset('build/images/reserved_seat.png') }}" rel="siège non réservé" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}" />
                    {% endif %}
                </div>
            {% endfor %}
        </div>
        <div class="row">
            {% for seat in seats if seat.rank == 'C' %}
                <div class="col">
                    {% if seat.user is null %}
                        <a href="#" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}">
                            <img class="img-fluid seat" src="{{ asset('build/images/free_seat.png') }}" rel="siège non réservé" />
                        </a>
                    {% else %}
                        <img class="img-fluid" src="{{ asset('build/images/reserved_seat.png') }}" rel="siège non réservé" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}" />
                    {% endif %}
                </div>
            {% endfor %}
        </div>
        <div class="row">
            {% for seat in seats if seat.rank == 'D' %}
                <div class="col">
                    {% if seat.user is null %}
                        <a href="#" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}">
                            <img class="img-fluid seat" src="{{ asset('build/images/free_seat.png') }}" rel="siège non réservé" />
                        </a>
                    {% else %}
                        <img class="img-fluid" src="{{ asset('build/images/reserved_seat.png') }}" rel="siège non réservé" data-toggle="popover" title="Informations" data-trigger="hover" data-content="Siège N°{{ seat.number }}, rang {{ seat.rank }}" />
                    {% endif %}
                </div>
            {% endfor %}
        </div>
    {% endblock %}

    Je sais que ce n'est pas la solution et j'aimerais faire cela avec deux boucles. Le problème est que le faire en PHP, C++ ou autres, je n'ai aucun problème mais avec Twig, c'est une toute autre histoire. J'ai essayé tout ce qui me passait par la tête mais j'ai l'impression qu'il manque un truc (soit parce que ce n'est pas possible avec Twig, soit parce que je ne cherchais pas à la bonne place) pour pouvoir afficher tous les sièges avec deux boucles (une qui parcours les rang et une qui parcours les places).

    Merci d'avance pour votre aide !
    "Non, je ne dois rien à personne
    Et je ne méprise personne".


    Je ne réponds pas aux message techniques par MP !

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 38
    Points : 40
    Points
    40
    Par défaut
    Bonjour j'ai le même problème a tu trouve une solution ?

Discussions similaires

  1. Gestion des images et textes dans une div
    Par SerialFF dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/08/2017, 16h14
  2. [Upload] Perdu dans la gestion des images
    Par thewaawshow dans le forum Langage
    Réponses: 9
    Dernier message: 19/09/2007, 14h32
  3. Réponses: 2
    Dernier message: 06/06/2007, 22h04
  4. Gestion des images dans une table en OLE
    Par Ale74 dans le forum IHM
    Réponses: 9
    Dernier message: 22/03/2007, 14h55
  5. gestion des images dans une base de données
    Par bkadje dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/10/2006, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo