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 :
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 :
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.
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 :
(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
:
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 :
Ensuite, testez votre commande :
Et hop, votre Thelia vous dit bonjour !
Ajouter votre commentaire
Les commentaires