Bonjour,
Je voudrais avoir une petite explication a propos de ce que sont les bundles.

  • Comment les organiser ?
    sur un site disons : frontEnd, BackEnd, base de données. quels sont les bundles que j'aurais besoin de créer ?
  • Prenons par exemple le bundle Base de données (enfin si ça se fait d'en créer un) je vais créer certaines methodes qui seront identiques pour tous mes sites comme par exemple récupérer le menu principal, récupérer les images pour une galerie etc.
    mon Bundle d'admin va être également commun à tous mes projets.
    j'ai donc besoin d'avoir un "départ" de projet personnalisé, par dessus Symfony, le Core de tous mes projets. comment faire ceci ?
    exemple :
    j'ai une methode getMenu() commune pour tous mes projets. comment puis-je faire pour la conserver pour tous mes projets ?

7 réponses


loko13
Réponse acceptée

Oui! Pour creer le Corebundle. Tu dois creer un bundle de manière tout à fais classique comme t'as appris dans le cours en respectant bien la convention des Noms de bundle comme expliqué dans le cours des bundles. Ensuite tu prnds ton layout général placé dans app et tu le mets dans ton Corebundle. A quel endroit précis ? Je te laisse chercher pour que t'aprennes. Ensuite tu dois changer ton héritage dans le bundle général uniquement (héritage=extends pareil je te laisse relire le cours si c'est pas clair), les autres vues n'ont pas besoin car ils héritent directement du loyaut général. Le Corebundle est uritisé si tu comptes créer d'autres bundles en relation avec ton projet un Forum, un Blog, un espace destiné aux membres pour qu'il puisent faire des tutos par exemple ... Je sais pas ce que tu veux dire par rappport à ton menu, mai oui tu peux avoir 1000 templates de vues destinés à faire plusieurs sites si tu veux mais ça passe pas par la bdd, moi ce que je ferais ce serait un layout generale , dessus je mettrais des block dans le menu , le footer, le corps etc puis je ferais des includes de mes menus , mes footer etc . Après chaque menu aurait ces propres méthodes dans son controlleur et ou son service si les méthodes sont trop importantes pour le controlleur. Et pour finir oui avec Symfony tu peux faire autant de sites à la chaine que tu veux en appelant les controlleurs que tu veux pour les méthodes etc. Si jamais tu coinces vraiment pour la création de ton Corebundle dis moi mais je t'invite vivement de cherhcer tout seul dans un premier temps.

nans
Réponse acceptée

Bonjour,

Pour mon site, voilà les Bundles que j'ai créé :

AdminBundle pour les fonctions que je suis seul à pouvoir réaliser
PublicBundle pour les action que se réalisent sans identification
structureBundle pour les "fondations" du site
UserBundle pour les fonctions utilisateurs
ExportBundle pour tout ce qui est export Excel, PDF, impression de page

Après peut-être que c'est n'importe quoi. A mon avis, le principal c'est de s'y retrouver.
Je dois avoir une trentaine de controller et je ne passe pas mon temps à les chercher dès que j'ai de la maintenance ou des MAJ à faire

Nans

J'avais pas bien compris ce que tu demandais donc je réedite. La réponse est un peu longue donc je te conseil de suivre le lien que je t'ai mis, tu vas mieux comprendre.
https://openclassrooms.com/courses/developpez-votre-site-web-avec-le-framework-symfony/le-moteur-de-templates-twig-1
.

mrdus
Auteur

Je suis déjà ce cours et c'est justement pourquoi je me pose des questions, mais je vois que je ne suis pas clair surtout.
et en ré-écrivant ma question je m'aperçois que je dois avoir certaines lacunes qui m'empêchent de comprendre.

En gros et en rapide ma question c'est : Est-ce que avec symfony je peux avoir un CoreBundle qui serait le véritable noyau de tous mes projets ? Un bundle que j'enrichirais au fil du temps et de l'expérience.
A chaque création de projet, je n'aurais qu'a l'importer pour y retrouver toutes les methodes de base dont j'ai besoin (par exemple récupérer le menu principal depuis une bdd, toutes les requetes importantes dont j'ai besoin comme ajouter/modifier/effacer une entrée de ma base de données)

mrdus
Auteur

merci loko,
je n'ai pas vraiment de souci pour créer mes bundles, ni pour résoudre cet exercice. (sauf sur un petit point avec les routes ^^ )
tu n'as pas compris ma question. mais c'est normal parce que j'ai du mal moi même à la formuler. ça a juste un rapport avec la façon d'organiser tout ça. j'imagine que ça va finir par rentrer avec la pratique.

comment formuler ?
Je pense que je ne comprend pas comment ranger tous ces fichiers :
disons que j'ai un site : Accueil - Blog - Galerie Photos - Contacts
le tout avec un panel admin qui permet de gérer tout ça à sa guise. donc : créer des articles de blog,ajouter des photos, modifier sa page contact (texte et photos) - modifier les photos du slider de la page accueil etc...

et là je sais pas ... je ferais surement un CoreBundle pour y mettre tout ce qui est commun à toutes les pages
un autre pour l'accueil et contacts
un autre pour le blog
un autre pour la galerie
pour l'admin je sais pas.... sois un AdminBundle pour tout gérer, sois je fais des adminController pour chacun des bundles avec les méthodes correspondantes à la gestion des pages que chaque bundle gère.
pour la bdd j'en ai aucune idée j'en suis pas là.

Ah ok , j'ai pas bien compris ,après ce que tu me dis là me semble assez logique, de toute façon le meilleur moyen pour résoudre ton souci sera de finir le cours déjà et ensuite en testant car ça se trouve, t'as un doute là que tu pourras résoudre à la suite du cours.

mrdus
Auteur

Alors j'ai suivi tes conseils Loko13, et apres tout ce temps j'ai avancé dans ma compréhension et voici ce que j'ai fait finalement :
j'ai choisi une approche Domain Design

  • CoreDomain : pas un bundle mais le domaine sans aucune dépendance
  • CoreDomainBundle : pour les classes en relations directes avec le domaine, liaison Bdd entre autre (factories, repositories)
  • Infrastructure : pour le mapping (contient donc DoctrineApiBundle)
  • UserInterface contient les bundles admin,users,etc (merci pour l'idée Nans)