Block title
Block content
Ze webmaster
Par Ze webmaster,
Fri 07 December 2018

Créer un module sur Drupal 8 : 1/2

Derrière la console

Principe


Avec Drupal 8, beaucoup de chose ont changé ... Ne serait-ce que l'architecture général d'une application Drupal.
Donc, même si vous aviez des automatismes sur Drupal 7, il est nécessaire de tout réapprendre, notamment pour découvrir les nouveaux outils disponibles.

Donc pas de panique, beaucoup de notions seront nouvelles, mais les nouveaux outils vont palier à ce temps.

 

Des petites révisions s'impose !


Drupal est desormais résolument orienté objet... C'est donc une mécanique à bien maîtriser. Donc il faut se replonger dedans, cela ne fait pas de mal !

Il sera intéressant donc de prendre deux minutes pour :

  • Revoir les bases de la POO ;
  • Revoir le fonctionnement de certains patterns : Factory, Singleton, Dependency Injection ... ;
  • Revoir le fonctionnement des namespaces.

Et puis, vous pourrez également jeter un coup d'oeil du côté de Doctrine, un ORM (Object-Relational Mapper) pour PHP qui permet de communiquer avec la base de données au travers d'objet, reflet des données de la base.
https://www.doctrine-project.org/

Et si vous êtes vraiment motivé, vous pouvez vous lancer dans les bases de Symfony ... Et beaucoup de ces nouveautés vont apparaitront plus claires.
Pour cela, vous pouvez suivre le cours OpenClassRoom, très bien fait...
https://openclassrooms.com/fr/courses/3619856-developpez-votre-site-web-avec-le-framework-symfony
https://symfony.com/doc/current/index.html#gsc.tab=0

 

La drupal console


La Drupal console est une Interface en Ligne de Commande (CLI) spécifique à Drupal 8.
D'une certaine manière, c'est un équivalent de Drush : elle permet de reconstruire les caches, intéragir avec la base de données, gérer la configuration du site.
Mais elle va encore plus loin en permettant de générer des structures de code standard, comme tous les éléments requis pour un module ou l'implementation d'un hook ...

Dans votre console, à la racine de votre projet
Pour accèder aux commandes principales

drupal

Pour accéder à des commandes spécifiques à la gestion des sites

cd /web/sites
drupal

 

Nous allons dans un premier temps nous en servir pour créer un module ... Tout en ligne de commande ... Cool non ?

 

Création de son premier module


Question architecture : où placer son module ?
Dans le dossier /web/modules. Vous pouvez le placer à la racine de votre site, mais c'est toujours plus agréable d'avoir un dossier dédié, ne serait-ce que pour ne pas avoir à chercher dans la foultitude des modules que vous aurez installés.

Quoi faire ?
Je vous invite à consulter la documentation technique à ce sujet.
Vous pouvez suivre pas à pas ce tutoriel, qui vous détaille les différents requis pour créer son propre module.
https://www.drupal.org/docs/8/creating-custom-modules/naming-and-placing-your-drupal-8-module

Comment faire ?
En bon fainéant, on va laisser faire la machine... qui est faite pour ça et qui commettra beaucoup moins d'erreur.
On utilise pour cela la drupal console, grâce à la commande generate:module

Dans le dossier /web/sites

drupal gm

Et on repond au questionnaire

// Welcome to the Drupal module generator
Enter the new module name: mon module
Enter the module machine name [mon_module]:
Enter the module Path [modules/custom]:
Enter module description []:
Enter package name [Custom]:
Enter Drupal Core version [8.x]:
Do you want to generate a .module file? (yes/no) [yes]:
Define module as feature (yes/no) [no]:
Do you want to add a composer.json file to your module? (yes/no) [yes]:
Would you like to add module dependencies? (yes/no) [no]:
Do you want to generate a unit test class? (yes/no) [yes]:
Do you want to generate a themeable template? (yes/no) [yes]:
Do you want proceed with the operation? (yes/no) [yes]:

La procédure terminé, vous pouvez vous rendre dans /web/modules/custom, vous verrez, tout est en place. Trop bien !

Ne reste plus qu'à l'activer :

drupal module:install mon_module

Ce qui va activer le module et reconstruire le cache.

 

Pour conclure cette première partie


Pour ceux qui avaient des automatisme sur  Drupal 7, il va falloir changer quelques habitudes. Néanmoins, les outils fournis sont très puissants et il convient d'investir un peu de temps pour bien les prendre en main.

En savoir plus

Créer son propre module
https://www.drupal.org/docs/8/creating-custom-modules

Créer son module en ligne de commande
https://befused.com/drupal/console

La drupal console
https://drupalconsole.com/

Commentaires


Ajouter un commentaire

edit Ajouter un commentaire