Drupal 8 - Prise en main de Drupal Console, installation et configuration

Posté le Mardi 12 janvier 2016 - 16:29
Dernière mise à jour le Mercredi 3 mai 2017 - 15:36

Drupal 8 est là, et avec lui de nombreux outils commencent à arriver, parmi eux : Drupal Console, qui vise à intégrer l'outil console de Symfony avec Drupal.

La console ne remplace pas (encore?) drush, mais propose un paquet de fonction permettant par exemple de générer des modules, des blocs, des entités, des types de contenus...

Le développement autour de cet outil est très actif et vous pouvez suivre ou participer à son développement sur la page Github du projet : https://github.com/hechoendrupal/DrupalConsole.

Installation de Drupal Console

MacOS et GNU/Linux

Mise à jour 2017 : Drupal Console s'installe maintenant en deux étapes : 

  1. il faut commencer par installer Drupal Console Launcher, qui est global et permet d'utiliser la console depuis n'impore où.
  2. Installer Drupal console ensuite au niveau de chaque projet, via composer par exemple.

Étape 1 : Installation du launcher

Dans un terminal :

# Téléchargement de l'outil
curl https://drupalconsole.com/installer -L -o drupal.phar

# On le déplace dans un dossier de binaires afin de pouvoir 
# le lancer depuis n'importe où 
# (à noter : on exécute la commande en tant qu'administrateur)
sudo mv drupal.phar /usr/local/bin/drupal

# On le rend exécutable : 
# (à noter : on exécute aussi la commande en tant qu'administrateur)
sudo chmod +x /usr/local/bin/drupal

Étape 2 : Installation en dépendance du projet via Composer

Pour ajouter drupal console en dépendance à votre projet, dans un terminal, déplacez-vous au niveau du dossier puis faite :

composer require drupal/console:~1.0 \
--prefer-dist \
--optimize-autoloader

À noter que les templates d'installation via composer, comme Drupal Project, possèdent déjà Drupal Console en dépendance.

Windows

Je n'ai pas pu tester l'installation sous windows, je peux juste vous renvoyer à la documentation : https://docs.drupalconsole.com/en/getting/windows.html

Test

Si ce dossier est dans votre variable d'environement "PATH" alors vous devrier pouvoir lancer la commande "drupal" depuis n'importe quel dossier.

Pour vérifier que l'outil est bien disponible, lancez la commande "drupal" depuis un terminal, et vous devriez avoir quelque chose comme ça :

Configuration initiale

Via la commande

drupal init

Drupal console va stocker dans votre répertoire personnel des informations de configuration.

Cette partie n'est absolument pas obligatoire, mais elle vous permettra de modifier un peu son comportement, de passer l'outil en Français par exemple, mais aussi d'avoir de l'auto-complétion.

La première question est à propos de l'endroit où stocker la configuration, je préfère la stocker dans mon dossier "Home" afin de pouvoir la sauvegarder.

Vous pouvez changer la langue de l'outil, attention la traduction FR n'est pas parfaite.

Si vous souhaitez bénéficier de l'auto-complétion suivez les retours de la commande et en fonction de votre interpréteur de terminal :

Bash or Zsh: Ajouter la ligne suivante à votre fichier .bashrc ou .zshrc :

source "$HOME/.console/console.rc" 2>/dev/null

Fish: Créez un lien symbolique

ln -s ~/.console/drupal.fish ~/.config/fish/completions/drupal.fish

La configuration est terminée, bravo vous allez pouvoir passer aux choses sérieuses !

Drupal Console & Drupal 8

L'objectif de Drupal Console est donc d’interagir avec un site / une application sous Drupal 8. Dans un terminal, déplacez-vous dans le dossier contenant votre instance du CMS.

Si vous n'avez pas encore installé de site Drupal, vous pouvez utiliser composer comme indiqué dans ce post.

À noter vous devrez être dans le dossier contenant les sources de drupal (exemple le dossier "Web" si vous avez installé Drupal via composer)

Pour voir la liste des commandes disponibles avec une explication lancez :

drupal list

Vous vous rendrez rapidement compte que la traduction en Français est loin d'être complète, n'hésitez-pas à participer sur la page du projet.

Génération d'un module

Le mieux étant d’expérimenter, essayez de générer un module :

la commande est drupal generate:module, mais vous pouvez aussi jouer avec l'auto-complétion :

Drupal Console Generate

Lancez la commande et laissez-vous guider :

drupal generate:module  

 // Bienvenue sur le générateur de modules Drupal

 Entrez le nom du nouveau module:
 > Mon Module

 Entrez le nom de la machine du module [mon_module]:
 > 

 Entrez le chemin du module [/modules/custom]:
 > 

 Entrez la description du module [My Awesome Module]:
 > Mon super module de test 

 Entrez le nom du paquet [Other]:
 > Kgaut

 Entrez la version core Drupal [8.x]:
 > 

 Définir le module comme une fonctionnalité <em>feature</em> (yes/no) [no]:
 > no

 Voulez-vous ajouter un fichier composer.json file à votre module (yes/no) [yes]:
 > yes

 Voulez-vous ajouter des dépendances à votre module (yes/no) [no]:
 > no


 Confirmez-vous la génération (yes/no) [yes]:
 > yes

Fichiers générés ou mis à jour
 Chemin du site: /media/vhosts/drupal8-test.dev/web
 1 - modules/custom/mon_module/mon_module.info.yml
 2 - modules/custom/mon_module/mon_module.module
 3 - modules/custom/mon_module/composer.json

Et maintenant vous verrez effectivement le module généré dans votre dossier modules/custom/.

Les modules ne sont pas les seules choses que vous puissiez générer à l'aide de Drupal Console : Types de contenu, Thèmes, Type d'entités...

Vous pouvez aussi générer du contenu factice pour populer vos types de contenus ou vocabulaires.

Mise à jour de Drupal Console

Le développement de Drupal Console est très actif, pour mettre à jour l'outil lancez la commande :

sudo drupal self-update
 

Comments

Pascal Pivaty

Posté le Mardi 19 janvier 2016 - 08:14

Bonjour
Merci pour les articles sur D8
Comment fait-on pour désinstaller proprement la console ?
Merci

kgaut

En réponse à par Pascal Pivaty

Posté le Mardi 19 janvier 2016 - 08:29

Bonjour,

Si vous l'avez installé comme présenter dans ce tuto alors :

# Suppresion de Drupal Console
sudo rm /usr/local/bin/drupal

# Suppresion de la config
sudo rm -Rf ~/.console/

 

Pascal Pivaty

En réponse à par kgaut

Posté le Samedi 23 janvier 2016 - 08:37

Merci pour la réponse.
J'ai réinstallé la console et ça fonctionne si je lance la commande drupal.
Mais quand je lance la commande drupal à partir du dossier drupal 8 j'ai une erreur : SQLSTATE[HY000] [2002] No such file or directory
Auriez-vous une idée sur la question ?
Merci

Posté le Lundi 2 mai 2016 - 09:42

La réponse a du déjà être trouvée, mais pour info ...
La réponse se trouve dans la documentation de drupalConsole (drupal-console-en.pdf) en fin du document. Je reproduit les lignes en anglais mais elles sont explicites.

You will need to edit your 'host' in your 'settings.php' file.
Navigate to sites/default/settings.php. In your settings.php file, change the host to read:
'host' => '127.0.0.1'
or if your 'settings.php' file already reads:
'host' => 'localhost'.
After you make the change, be sure to save the file and then run DrupalConsole again.

Posté le Lundi 18 juillet 2016 - 09:46

Bonjour,
Bravo pour le tuto c'est très utile.
J'obtiens l'erreur PDOException No such file or directory
J'ai changé la config du setting.php.
Du coup j'obtiens l'erreur SQLSTATE[HY000] [2002] Connection refused drupal console, et pire le site n'est plus déployable :s

kgaut

En réponse à par yousra

Posté le Lundi 18 juillet 2016 - 10:21

Bonjour,

À quel moment obtennez-vous cette erreur ?

yousra

En réponse à par kgaut

Posté le Lundi 18 juillet 2016 - 10:59

Je l'obtiens lorsque je me positionne dans le répertoire de mon site et j'essaie la commande Drupal. Celle ci fonctionne parfaitement dans toute autre arborescence, mais ne fonctionne pas sur mon site.
A noter que j'utilise MAMP/drupal 8, je suis sur mac, j'ai créé le site avec la méthode classique et non grâce à composer.

Posté le Samedi 23 juillet 2016 - 18:41

pas de réponse ? je galère vraiment pour faire marche drupal console :(

mira

Posté le Dimanche 23 avril 2017 - 20:07

[ERROR] Drupal Console is not installed at:

You must execute the following composer commands:

composer require drupal/console:~1.0 --prefer-dist --optimize-autoloader
composer update drupal/console --with-dependencies

Pascal Pivaty

Posté le Mardi 25 juillet 2017 - 11:32

Bonjour
Je reviens à drupal 8 quelques mois après... et j'ai toujours le même problème avec la console.

J'ai suivi scrupuleusement vos instructions et je me retrouve avec un : SQLSTATE[HY000] [2002] No such file or directory et si je change dans settings.pph 'localhost' pour '127.0.0.1' j'ai SQLSTATE[HY000] [2002] Connection refused avec em prime le site qui est inaccessible !

Ça doit faire une petite semaine que j'essaye de faire fonctionner la chose et je deviens maboule ;-)

Peut-être avez vous une suggestion, une petite piste... allez même un petit encouragement !!!

Merci

Matieu

Posté le Jeudi 17 août 2017 - 15:36

Bonjour,

j'ai suivi votre tutoriel et lorsque j'entre drupal dans le terminal ça fonctionne partout. Sauf à la racine de mon site (au dossier public_html contenant composer.json et web). L'erreur suivant apparait :

PHP Fatal error: Uncaught Error: Call to undefined method Drupal\Console\Core\Utils\DrupalFinder::getVendorDir() in /home/www.s1biose.com/public_html/vendor/drupal/console-core/src/Utils/Drupal…
Stack trace:
#0 /home/www.s1biose.com/public_html/vendor/drupal/console/bin/drupal.php(37): Drupal\Console\Core\Utils\DrupalFinder->locateRoot('/home/www.s1bio...')
#1 /home/www.s1biose.com/public_html/vendor/drupal/console/bin/drupal(4): require('/home/www.s1bio...')
#2 {main}
thrown in /home/www.s1biose.com/public_html/vendor/drupal/console-core/src/Utils/Drupal… on line 24

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...