Bonjour

Je poste ce message car je travaille sur un projet de gestion de formulaire et de prise se rendez-vous. Dans le cadre de ce projet
j'aimerais en faire 2 sous-projets ( formulaire / rendez-vous) qui pourront être utilisable indépendamment l'un de l'autre.

Mon problème ici n'est pas sur le dev pur du projet mais plutôt sur la façon de faire pour créer des "sous-projet"
Je précise que je suis et j'aimerais rester sous Symfony 4, j'ai commencé Symfony par cette version je n'ai pas d'expérience pratique avec les autres.

Mais je me suis tout de même documenter, je sais qu'il existe un système de bundles ou de namespaces qui pourrait faire ce que je souhaite sous Symfony 3 mais j'ai lu un peu partous qu'il ne fallait pas utilisez ce procédé sous Symfony 4.
De même pour les services.
j'aurais aimé avoir un sous-projet que je puisse importer dans le même genre que composer (composer require nomsousprojet), qui me permettent d'important dans un projet, le sous-projet en question avec ses routes, ses contrôler, ses templates.

Le principe de "sous- projet réutilisable" est très connus en de donc je pensse que cela doit être possible même avec sf4.

Donc si quelqu'un aurais des conseil ou bien une référence vers de la documentation sur laquel je pourrais me tourner ou tous simplement me confirmer que ce que je recherche est possible, j'en serai ravi.

Merci d'avance à toute personne qui cherchera à m'aiguiller
Je reste disponible pour toute information ou préscision complémentaire

4 réponses


Piou-piou
Réponse acceptée

Hello,

Les bundles existent toujours sur Symfony 4, il fonctionnent quasiement comme sous les anciennes versions. néenmoins, comme tu l'as dit plus haut, il n'est plus conseillé de les utiliser.
La seule raison ou les bundles sont autorisés, c'est pour partager du codes entres diverses applications comme un FormType précis, bundle d'admin comme SonataAdminBundle ;)
Si tes sous-projets répondeent à ces cas d'utilisation, tu peux faires des bundles, la doc ici : https://symfony.com/doc/current/bundles.html

Sinon l'autre solution pour séparer tes deux projets, c'est de les faire sous deux namespaces différents genre :

  • App\Formulaire...
  • App\RendezVous...

En espérant t'avoir aidé :)

Piou-piou
Réponse acceptée

Hello,

C'est presque ça ;)
Pour les namespace c'est l'inverse, les dossiers de bases ne bougent pas (Controller, Entity, Repository, ...)

Ton namespace doit être App\Controller\RendezVous et l'autre App\Controller\Formulaire.

Pour le kernel.php tu ne dois pas y toucher, tu ne dois modifier que src pour la partie php. Et pour service.yaml, il s'agit d'une class qu'il est possible d'implémenter à plusieurs endroit en autowiring. La doc ici https://symfony.com/doc/current/service_container.html

En espérant t'avoir aidé :)

Weslink
Auteur

Déja merci pour l'information,
j'ai choisi de partir sur des namespaces.
Du coup je doit avoir une architectures de ce style?

-bin
-config
-public
-src
        -RendezVous
                  -Controller
                  -Entity
                  -Form
                  -Migrations
                  -Repository
                  -Kernel
        -Formulaire
                  -Controller
                  -Entity
                  -Form
                  -Migrations
                  -Repository
                  -Kernel
-templates
-tests
-translations
-var
-vendor

de plus j'ai du mal à cerné les fichiers kernel.php et services.yaml.
j'ai éssayer de déplacer un controller dans un namespace App/RendezVous/Controller, mais suite à cela il ne détecte plus aucune route de ce controller.

et si je déplace tous dans un name space RendezVous sans le Formulaire, il ne trouve plus le kernel depuis le index.php
et je ne peut pas lui spécifier le chemin pour Planning car sinon il ne trouverais pas mes autre namespace une fois introduit.

Weslink
Auteur

ok j'ai réussi à faire 2 namespace
merci pour votre aide Piou-piou