Bonjour,
j'ai dans ma bbd une table category et une table sub_category liées ente elle avec une relation manytoone et onetomany.

dans mon home controller j'arrive bien à récupéré toute mes catégories et également mes sous-catégories mais je ne trouve pas comment faire pour lié la sous-catégorie à la catégorie via le l'id de la catégorie présent dans la sous-catégorie.

Mon controller

class HomeController extends AbstractController
{
    /**
     * @Route("/", name="app_home")
     */
    public function index(CategoryRepository $categoryRepository, SubCategoryRepository $subcategoryRepository): Response
    {
        $categories = $categoryRepository->findby(array('id' => [1, 2, 3, 4, 5, 6, 7, 8, 9])); // ceci car il me fallais les 9 premier et pas le dernier "10".
        $subcategory = $subcategoryRepository->findAll('category'); // category ici c le cat_id dans la table sub_cat

        return $this->render('home/home.html.twig', compact('categories', 'subcategory'));
    }
}

Mon fichier twig

{# navbar produits "catégories" #}
    <div class="nav-produit">
        <div class="cat-popover">
            {% for category in categories %}
                <a href="#" class="cat-guitare" id="cat-guitare" value="{{ category.id }}">{{ category.label }}</a>
            {% endfor %}
            <div class="contenu-guitare">
                <ul class="texte-popover">
                    {% for subcategory in subcategory %}
                    <li class="line-height"><a href="#" value="{{ subcategory.category.id }}">{{ subcategory.label }}</a></li>
                    {% endfor %}
                </ul>
            </div> 
        </div>
    </div>

MERCI POUR VOTRE TEMPS

9 réponses


Wilfried Musanzi
Réponse acceptée

Techniquement je ne fais pas de framework, après une formation suivie en orienté objet j'ose croire qu'il te faut créer un autre controller pour la vue showByCategories par exemple et là tu vas récupérer les éléments qui ont la catégorie que tu souhaites afficher et tu rediriges vers la meme page index, ça peut etre un findBy(...)->where('category_id = id') ;
cette route s'appellerait viewBy et tu luis passera un slug qui sera le nom de la catégorie la dans ton twig tu lui passes ça dans ton lien.

Pourquoi récupérer les catégories par un findby si tu veux seulement les 9 premiers tu peux utiliser un LIMIT

symf
Auteur

Bonjour pour le findBy on peut utiliser un limit -> findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)

J'ai donc modifié ma requête par ceci

$categories = $categoryRepository->findBy(array(), array(), 9, null);
symf
Auteur

mais celà ne m'aide pas dans mon problème...

Essaie de faire un dump() des catégories et des subcategory voir si tu récupères vraiment les données.

symf
Auteur

oui j'ai déja vérfié en premier lieux je récupère bien les catégories et les sous-catégories mon problème c'est plus comment trier mes sous-catégories par rapport aux catégories sinon je récupère bien tout, mais tout en même temps j'aimerais juste quand je clique par exemple sur guitare j'ai un popover doit afficher seulement les sous-catégories qui ont pour cat_id l'id de la catégorie en question ici dans mon popover toutes les sous-catégories s'affichent.

Mais c'est un peu normal vu que dans mon twig j'appel dans la boucle tout les labels des sous-catégories, mais comment trié par rapport à l'id,
car quand je demande la catégories de chaque sous-catégorie il me les affiches biens donc il y a cette relation mais je n'arrive seulement pas à relié l'id de la catégorie avec l'id de la catégorie dans la sous-catégorie pour faire la comparaison et n'afficher que celles qui correspondent...

ps: j'ai 9 catégories avec environ 10 sous-catégories chacune. comme je n'est pas de correspondance les 90 sous-catégories s'affiche pour une catégorie.

dommage qu'on ne puisse pas afficher d'image ca aurait était plus parlant

si je suis pas clair n'hésite pas à me le dire

symf
Auteur

Merci pour votre aide

C'est un plaisir d'aider.

vous etre super