Créer sa propre commande Thelia

Publié le


En plus de fournir une console, Thelia vous permet d'ajouter vos propres commandes à celle-ci.

Pour ce faire, il va falloir créer un module alors allons-y !

Création du module

À l'aide de votre terminal, rendez-vous dans votre répertoire d'installation de Thelia :

cd /var/www/thelia

Bien entendu ce chemin est un exemple.

Ensuite, nous allons utiliser la console Thelia afin de créer notre module. Vous allez voir c'est magique !

Saisissez la commande suivante :

php Thelia module:generate MyCommands

MyCommands étant le nom de votre module.

Grâce à la console, Thelia va créer lui-même tous les fichiers utiles au bon fonctionnement de votre module.

Ouvrez votre projet avec votre éditeur préféré et vous allez voir apparaitre votre nouveau module dans le répertoire local/modules.

mycommands

Ici, tout ce dont vous pouvez avoir besoin pour créer un module Thelia est généré. Bien entendu, pour créer une nouvelle commande, nous n'allons pas avoir besoin de tout ça. Faisons un peu de ménage, vous pouvez supprimer les répertoires AdminIncludes, Controller, EventListeners, Hook, I18n, Loop, Model et templates et les fichiers Config/routing.xml, Config/schema.xml.

Pour ce tutoriel, nous allons prendre l'exemple de la documentation afin de créer une commande qui affiche un simple "Hello World" mais vous pouvez bien entendu allez plus loin ! Il suffit de s'appuyer un peu sur la documentation de Symfony.

Ouvrez le fichier Config/config.xml et ajoutez la ligne suivante :

<command class="MyCommands\Command\HelloWorld"/>

(dans le noeud <commands></commands>)

Vous venez d'ajouter une nouvelle directive "command" qui sera gérée par le fichier HelloWorld qui se trouve dans le répertoire Commands.

Vous pouvez bien entendu supprimer les noeuds inutiles du fichier comme par exemple loops et forms.

Ensuite, il faut créer le fichier appelé par le nouveau noeud XML que vous venez de déclarer.

Créons donc le fichier HelloWorld.php dans le répertoire Command :

<?php
namespace MyCommands\Command;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Thelia\Command\ContainerAwareCommand;

class HelloWorld extends ContainerAwareCommand
{
    protected function configure()
    {
        $this
            ->setName("hello:world")
            ->setDescription("output hello world");
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $output->writeln("Hello world !");
    }
}

Il vous suffit maintenant d'aller tester votre nouvelle commande !

Retournez sur votre terminal et saisissez la commande suivante pour activer votre module :

php Thelia module:activate MyCommands

Ensuite, testez votre commande :

php Thelia hello:world

Et hop, votre Thelia vous dit bonjour !

Ajouter votre commentaire

Les commentaires

Search