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

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

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

Définition de la commande

modules/mon_module/src/Command/ResalysCommand.php

<?php
namespace Drupal\mon_module\Command;

use Drupal\mon_module\Service\Resalys;
use Drush\Commands\DrushCommands;

class ResalysCommand extends DrushCommands {

  protected $resalys;

  public function __construct(Resalys $resalys) {
    parent::__construct();
    $this->resalys = $resalys;
  }

  /**
   * Sync resalys cache
   *
   * @command resalys:sync
   * @usage drush resalys:sync
   * @usage drush resalys:sync --force
   *
   * @param int[] $options
   */
  public function sync($options = ['force' => FALSE]) {
    $force = (bool) $options['force'];
    $this->resalys->syncResalys($force);
  }

}

Utilisation

drush resalys:sync
drush resalys:sync --force

 

Contenus en rapport

Installer drush sous linux via composer

Drush est un outil indispensable pour développer sous drupal, il permet de contrôler son instance de site via le terminal pour les taches quotidiennes sur un site : téléchargement, activation de modules, vidage de cache, mise à jours de modules ou du core... Une fois que l'on y a goûté, on ne peut plus s'en passer.

Ajouter un commentaire

Ne sera pas publié
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...