Drupal 8 introduit un changement majeur dans le développement des modules custom avec notamment l'ajout de Symfony.
Cet article porte sur la façon de créer un module sur Drupal 8 ainsi que les nouveaux concepts de routes et de classes de contrôleur menu.
1. Création du module
- Pour commencer, comme sur Drupal 7, nous allons créer un répertoire que l'on nommera ici « hello » dans /modules à la racine.
On notera au passage que le core de Drupal 8 se trouve dans le répertoire « core ». On ne touchera donc jamais à ce répertoire.
On notera également que les dossiers dans lesquels nous pourrons ajouter des modules et des thèmes se trouvent maintenant à la racine soit /modules et /themes en remplacement de /sites/all/modules et /sites/all/themes sur Drupal 7.
- Dans notre répertoire « hello », nous allons créer un fichier intitulé « hello.info.yml »
Contrairement à Drupal 7, le fichier d'informations du module n'est pas plus « mon_module.info » mais « mon_module.info.yml ».
En effet, Drupal 8 utilise le format YAML pour ses fichiers.
Pour le fichier info cela reste assez similaire à Drupal 7.
-
Dans notre fichier info, nous allons insérer le code suivant :
name: Hello World! type: module description: 'Displays a Hello World page.' package: Example Modules version: VERSION core: 8.x
2. Création du fichier .module
Dans Drupal 8, la création du fichier .module ne change pas.
-
Nous allons donc créer un fichier nommé « hello.module » et y insérer le code suivant :
Nous avons créer ici un hook_menu contenant un titre, une description et le nom de la route.
Dans ce hook_menu la route est constitué du nom_du_module.le_nom_de_la_route que l'on retrouvera dans le prochain fichier que nous allons créer.
3. Création du fichier route
- Nous allons maintenant créer le fichier route que l'on nommera « hello.routing.yml » et on y insère le code suivant :
hello.hello_world: path: '/hello_world' defaults: _content: '\Drupal\hello\Controller\HelloController::helloWorld' requirements: _permission: 'view hello world'
Ce fichier va permettre de définir le chemin du menu, les permissions ainsi que les classes et les méthodes utilisées par le contrôle
4. Création du contrôleur
-
Le dernier fichier à créer pour afficher notre Hello World est le contrôleur. Ce fichier sera placé dans le répertoire \lib\Drupal\hello\Controller\HelloController.php que l'on crée dans le répertoire du module. On le nomme « HelloController.php » et on y insère le code suivant :
<?php
/**
* @file
* Contains \Drupal\hello\Controller\HelloController.
*/ namespace Drupal\hello\Controller;use
Drupal\Core\Controller\ControllerBase; /**
* Controller routines for hello module routes.
*/
class HelloController extends ControllerBase {
* Return the 'Hello World' page.
*
* @return string
* A render array containing our 'Hello World' page content.
*/
public function helloWorld() {
$output = array();
'#markup' => 'Hello World!',
);return
$output;
}}
?>
Et voilà ! Avec ces 4 fichiers notre module est crée et permet en accédant à l'url /hello_world de voir apparaître notre fameux Hello World.