Drupal 8 et Drupal 9 - Créer une commande drush personnalisée

Posté le Jeudi 25 juin 2020 - 13:38

Voici un exemple rapide de commande drush appelant une méthode d'un service avec une option lors de l'appel.

À noter : Drupal\mon_module\Service\Resalys est un service existant, je souhaite utiliser la méthode syncResalys de ce service qui accepte un paramètre optionnel : $force

Déclaration de la commande

modules/mon_module/drush.services.yml

  1. services:
  2.   mon_module.drush.resalys: # clé du fichier de commande, à définir vous même
  3.   class: Drupal\mon_module\Command\ResalysCommand # Namespace de la classe contenant la commande
  4.   arguments:
  5. - '@mon_module.resalys' # Service à injecter dans notre commande
  6.   tags:
  7.   - { name: drush.command }

Définition de la commande

modules/mon_module/src/Command/ResalysCommand.php

  1. <?php
  2. namespace Drupal\mon_module\Command;
  3.  
  4. use Drupal\mon_module\Service\Resalys;
  5. use Drush\Commands\DrushCommands;
  6.  
  7. class ResalysCommand extends DrushCommands {
  8.  
  9. protected $resalys;
  10.  
  11. public function __construct(Resalys $resalys) {
  12. parent::__construct();
  13. $this->resalys = $resalys;
  14. }
  15.  
  16. /**
  17.   * Sync resalys cache
  18.   *
  19.   * @command resalys:sync
  20.   * @usage drush resalys:sync
  21.   * @usage drush resalys:sync --force
  22.   *
  23.   * @param int[] $options
  24.   */
  25. public function sync($options = ['force' => FALSE]) {
  26. $force = (bool) $options['force'];
  27. $this->resalys->syncResalys($force);
  28. }
  29.  
  30. }

Utilisation

  1. drush resalys:sync
  2. drush resalys:sync --force

 

Aller plus loin ?

 

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...