Avec l'intégration de composants de Symfony2, l'adoption du format YAML, la refonte complète de Drupal 8 vers la programmation orientée objet, etc. l'initialisation d'un module Drupal 8 est devenue plus complexe (au sens chronophage) que sur Drupal 7 où il suffisait de déclarer son module (fichier .info) et de créer un fichier .module pour pouvoir commencer tout de suite à développer des fonctionnalités métier.
Drupal 8 est désormais conforme à la spécification PSR-4, qui permet de charger automatiquement une classe depuis un chemin du système de fichiers. Cela signifie entre autres qu'un répertoire d'un module Drupal 8 doit respecter désormais une structure bien précise. La création de cette structure peut se révéler fastidieuse. Découvrons comment nous pouvons automatiser cela grâce au composant console.
Le but de ce projet est de tirer parti du composant Console de Symfony et donc de fournir un outil en ligne de commande pour automatiser la création de modules drupal 8 et assurer d'autres tâches récurrentes.
Ce projet permet donc de
- génèrer les fichiers du module et les fichiers de configuration.
- génèrer une structure de répertoire compatible PSR-4 pour un module.
- créer des routes sur les fichiers YML et les lier à leur contrôleur et leurs classes de formulaire PHP.
- créer des classes (utilisation des namespaces, uses, implements et extends quand c'est nécessaire)
- ajouter des services en utilisant l'injection de dépendance lors de la génération de classe.
- lister les services enregistrés sur le conteneur de services.
- lister les routes enregistrées sur le système de routage.
- reconstruire le cache du système de routage
Passons à la pratique pour voir de quoi il en retourne plus concrètement.
Installation des pré-requis : composer
source $HOME/.bashrc
Pour plus d'infos pour installer Composer vous pouvez consulter cette documentation ou encore ce billet relatif à Composer pour installer Drush compatible avec Drupal 8.
Installation de Console
Mise à jour du 25/02/2015 : Le projet Console évolue vite et son installation devient de plus en plus simple. Référez vous au site dédié pour l'installation de Drupal console : drupalconsole.com
Une fois ces pré-requis terminés, attaquons l'installation du module console.
Vous pouvez vérifier que console est bien installé
Cette commande vous renvoie alors toutes les commandes Drupal8 disponible avec console.
Génération d'un module Drupal 8
Et nous pouvons désormais créer notre module en executant la commande
En quelques secondes, nous disposons maintenant de notre module (de type "hello world") disposant d'un contrôleur de base, de tests et d'une structure de répertoire conforme aux spécifications PSR-4.
Nous pouvons alors commencer à implémenter nos fonctionnalités. Mais console ne s'arrête pas là et couvre bien d'autres usages...Il peut par exemple générer en quelques secondes un contrôleur, un formulaire, un block, ou encore une entité spécifique à l'instar du module Entity Construction Kit pour Drupal 7, ou encore de l'utilitaire disponible en ligne Drupal Entity Generator, basé sur le module model.
Mais ceci fera l'objet d'un autre billet. Vous avez déjà utilisé console ? Pour d'autres usages ? N'hésitez pas à partager votre expérience dans les commentaires.
Commentaires
merci pour cet artcle,
merci pour cet artcle, interressant.
Est-ce qu'il y a un overlap entre la console et drush?
Bonjour,
Bonjour,
La question a été soulevée. Ce n'est pas impossible. cf. https://www.drupal.org/node/2298437
Help
Bonjour,
J'ai suivis les étapes d'installation de la console tout semble bien se passer.
Seulement au lancement j'ai une erreur :
voici le message :
[RuntimeException]
Missing $settings['hash_salt'] in settings.php.
J'ai cherché sur le net mais je n'ai rien trouvé de pertinent si quelqu'un pouvait avoir une idée ca m'arrangerait !
Merci ! :D
Drupal8 bouge vite.
Drupal8 bouge vite. As-tu essayé avec la version beta2 de d8 ? D'après le site monté par les mainteneurs (http://drupalconsole.com/), à ce jour seule la version beta2 est supportée.
Help beta2
Oui je viens d'essayer en Beta2 et rien ne change ...
Aucune idée là toujours le même message d'erreur.
Fix
J'ai trouvé d'où venait mon erreur. Quand on est en multi sites on a pas de settings.php dans [root]/sites/ il suffit d'en copier un pour avoir un hash_salt et ca fonctionne.
Je pensais avoir déjà fais ca mais là surprise ca marche ..
Difficulté à activer la concole
Bonjour,
J'ai suivi la procédure décrite, j'ai une erreur à l'installation de console.
symfony/dependency-injection suggests installing symfony/config ()
symfony/dependency-injection suggests installing symfony/proxy-manager-bridge (Generate service proxies to lazy load them)
symfony/console suggests installing symfony/event-dispatcher ()
symfony/console suggests installing symfony/process ()
symfony/console suggests installing psr/log (For using the console logger)
J'ai placé le répertoire bin dans www/mon.site/ est-ce le bon endroit ?
Je ne trouve pas l'erreur sur le net.
Je suis en ubuntu 14.
Merci de vos excellents tuto.
EM
Ajouter un commentaire