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

Cet article a été écrit il y a plus de quatre ans, son contenu n'est peut-être plus d'actualité.

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

snippet · 14 Mai 2019 Drupal - Drush - Appeler un script php et lui passer un argument Il est possible via drush d’exécuter un script php et de profiter de toute l'API de drupal pour effectuer des traitements (création / suppression de contenu… article · 27 Oct 2014 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…

Commentaires (0)