Bonjour à tous,

Je suis en formation dev et donc un débutant. S'il vous plaît merci d'expliquer au mieux vos réponses.

Pour un projet de stage en PHP et Symfony 5 je souhaite réaliser un carrousel en lien avec la BDD car son futur utilisateur doit pouvoir ajouter le nombre de photos de son choix dans ce carrousel via le formulaire.

J'ai une entité Produit qui est en relation avec l'entité Photo_produit qui va elle contenir les multiples photos et les associer en fonction de l'ID du produit, rien d'extra jusque là.
Je vais donc dans le CRUD de mon entité Produit et pour l'affichage d'un seul produit j'insère gentiment un des modèles de bootstrap qui s'affiche convenablement mais quand je souhaite passer à l'image suivante rien ne se produit.. Alors que mes images sont bien enregistrées dans la BDD.

Ce screen est mon fichier show.html.twig

    {% if produit.photoProduits|length != 0 %}

        <div id="monCarrousel" class="carousel slide" data-ride="carousel">
            <div class="carousel-inner">

            {% for photoProduit in produit.photoProduits %}

                <div class="carousel-item {% if loop.index0 == 0 %} active {% endif %}">
                    <img class="d-block w-50 white" src="{{ asset('build/images/' ~ photoProduit.adresse) }}" alt="Image du produit">
                </div>

            {% endfor %}

            </div>

            <a class="carousel-control-prev" href="#monCarrousel" role="button" data-slide="prev">
                <span class="carousel-control-prev-icon" aria-hidden="true"></span>
            </a>

            <a class="carousel-control-next" href="#monCarrousel" role="button" data-slide="next">
                <span class="carousel-control-next-icon" aria-hidden="true"></span>
            </a>
        </div>

    {% else %}

        <h4 class="white"> Les photos seront bientôt disponibles </h1>

    {% endif %}

    <a href="{{ path('app_produit_index') }}" id="bouton_validation">Retour à la liste</a>

    </div>
</div>

Je constate d'ailleurs que mes images sont bien toutes en place car si je change la valeur de loop.index0 mon image active n'est plus la même (logique vous me direz). Ce que je n'arrive pas à faire c'est passer d'une image à l'autre comme si je n'avais pas de pointeur pour me déplacer dans le tableau de mes photos.

J'ai essayé beaucoup de choses comme l'ajout de php avec une belle boucle while et un compteur mais sans succès car lorsque je fais ça je me prend une erreur comme quoi il ne trouve pas photoProduit qui est dans ma balise img (normal car je retire la boucle for qui permet de l'identifier).

J'espère avoir été bon dans mes explications. Merci d'avance pour les vôtres.

5 réponses


Bonsoir, je voulais savoir si tu avais réussi à réaliser ça ou pas ? Si oui, comment as-tu fais ?

TweakBox Tutuapp

Bonjour/Bonsoir,

Pas encore, je continue mon projet sur le reste pour continuer d'avancer et je reviendrais sur cette partie plus tard. J'ai peut-être une idée et ce sera forcément en JS il faut que je la teste prochainement.

Salut !! je n'utilise pas synfony et encore moins twig mais si ça peut aidé, parce que j'ai pas du tout compris ton code, pour l'exemple moi je fais ça et ça fonctionne.

structure html

                <div id="cptbc_326" class="carousel slide" data-interval="5000">
                    <div class="carousel-inner">
                    <?php
                        foreach($CarouselGallery as $k => $carousel){
                            $activeCarousel = ($k == 0) ? 'active' : '' ;
                    ?>
                        <div class="item <?= $activeCarousel; ?>" id="item-<?= $carousel->id; ?>">
                            <img src="image">
                            <div class="carousel-caption">
                                <h4><?= $carousel->title; ?></h4><p><?= $carousel->description; ?></p>
                            </div>              
                        </div> 
                    <?php
                        }
                    ?>
                    </div>

                        <a class="left carousel-control" href="#cptbc_326" data-slide="prev"><span class="glyphicon glyphicon-chevron-left"></span></a>
                        <a class="right carousel-control" href="#cptbc_326" data-slide="next"><span class="glyphicon glyphicon-chevron-right"></span></a>

                </div>

Et le php

function CarouselGallery(){

    global $db;

    $req = $db->query("SELECT * FROM files ORDER BY uploaded LIMIT 0,5");
    $gallery = $req->fetchAll();
    return $gallery;
}

$CarouselGallery = CarouselGallery();

Bonjour,

et ça te donne quoi dans le html généré ?

Salut neecride,

Merci pour ta réponse ! Je vais bientôt très revenir sur le sujet alors ça sera sûrement intéressant ce que tu as partagé !