Drush peut vous faire gagner beaucoup de temps à la création d'un module grâce à la commande :
drush gen module
Cette commande va créer automatique
- le répertoire du module,
- le fichier nommodule.info.yml
- le fichier nommodule.routing.yml
- le fichier nommodule.module
Pour créer ces éléments, Drush vous posera plusieurs questions. Quand à la fin d'une question il y a un mot entre crochet, il s'agit de la réponse par défaut que vous pouvez valider en appuyant sur la touche [entrée]
Voici les éléments que drush demande :
Le name du module qui est le nom pour les utilisateurs et qui apparaîtra dans la page extension
Le machine name qui ne doit contenir aucun espace ni caractères spéciaux
La description du module qui sera affichée dans la page extension
Le package qui correspond à une catégorie de module et à un sous-répertoire dans le dossier module. Les modules officiels, c'est à dire récupéré sur "drupal.org/project" sont placés dans le package "contrib". Les modules maisons doivent être mis dans "custom" qui est la réponse par défaut.
Les dépendances, c'est à dire les nom machine des modules qui doivent être installés avant de pouvoir installer ce module. Chaque dépendance doit être séparée par une virgule. Drush est capable de chercher parmi les modules du coeur, les contrib et les custom.
Ensuite Drush vous demande si vous voulez créer les fichiers suivants
nommodule.install qui sert à gérer des actions à l'installation et à la desinstallation
nommodule.libraries.yml qui permet de déclarer des librairies JS et CSS
nommodules.permissions.yml qui permet de créer des droits spécifiques au module
nommoduleSubscriber qui est placé dans le répertoire src/EventSubscriber qui crée un service qui lancera des commande lors d'événement. Drush crée un service exemple qui affiche des messages lors des événements "envoi de requête" et "réception de requête". Pour permettre l'injection de ce service, drush crée aussi le fichier nommodule.services.yml à la racine du module.
ExempleBlock.php qui est placé dans le répertoire src/Plugin/Block est qui génère un bloc qui peut être placé dans une région à l'aide de l'interface graphique (structure->mise en place des blocs)
NommoduleController qui est placé dans le répertoire src/Controller qui permet de définir les actions à mener pour chaque route
SettingForm qui est placé dans le répertoire src/Form qui est un exemple de formulaire qui permet de stocker un élément de configuration en base de donnée.