Outils pour utilisateurs

Outils du site


symfony5:console_creer_ses_commandes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
symfony5:console_creer_ses_commandes [2020/05/31 08:59]
marclebrun [Lister les commandes existantes]
— (Version actuelle)
Ligne 1: Ligne 1:
-====== Créer ses propres commandes console ====== 
- 
-Créer des commandes console permettra, entre autres choses, d'​appeler une 
-fonction du site à intervalle régulier via une tâche **cron**. 
- 
-  * Doc officielle: [[https://​symfony.com/​doc/​current/​console.html]] 
-  * Exemple (ancienne version !) : [[https://​www.babeuloula.fr/​blog/​creer-une-tache-cron-sous-symfony.html]] 
- 
-===== Lister les commandes existantes ===== 
- 
-<code bash> 
-php bin/console list 
-</​code>​ 
- 
-Les commandes personnelles apparaissent dans cette liste : 
- 
-<​code>​ 
-Available commands: 
- 
- ... 
- 
- app 
-  app:​sendtestemail ​           Envoi d'un email pour test 
-  app:​sendzippedfolder ​        ​Envoyer le contenu d'un dossier par email (zippé) 
-  app:​test ​                    ​Commande console de test. 
- 
- ... 
-</​code>​ 
- 
-===== Exemple simple (affichage d'un texte) ===== 
- 
-<code php /​src/​command/​CommandeTest.php>​ 
-namespace App\Command;​ 
- 
-use Symfony\Component\Console\Command\Command;​ 
-use Symfony\Component\Console\Input\InputInterface;​ 
-use Symfony\Component\Console\Output\OutputInterface;​ 
- 
-class CommandeTest extends Command { 
- 
-    // Nom de la commande 
-    protected static $defaultName = '​app:​test';​ 
- 
-    protected function configure() { 
-        ​ 
-        // Description 
-        $this->​setDescription("​Permet de faire un test dans la console"​);​ 
- 
-        // Aide si on lance la commande "​bin/​console app:test -h" 
-        $this->​setHelp("​Aide de la commande..."​);​ 
- 
-    } 
- 
-    public function execute( 
-        InputInterface $input, 
-        OutputInterface $output 
-    ) { 
-        ​ 
-        // Une ligne de texte 
-        $output->​writeln("​Bonjour !"); 
-        ​ 
-        // Plusieurs lignes de texte 
-        $output->​writeln([ 
-            "​Première ligne",​ 
-            "​Deuxième ligne" 
-        ]); 
-        ​ 
-        return 0; 
-    } 
-    ​ 
-} 
-</​code>​ 
- 
-L'​**autoconfiguration** permet d'​éviter d'​avoir à recenser la nouvelle commande 
-dans les services. 
- 
-Lancer la commande : 
- 
-<code bash> 
-php bin/console app:test 
-</​code>​ 
- 
-===== Commande avec arguments ===== 
- 
-<code php /​src/​command/​CommandeTest.php>​ 
-namespace App\Command;​ 
- 
-use Symfony\Component\Console\Command\Command;​ 
-use Symfony\Component\Console\Input\InputArgument;​ 
-use Symfony\Component\Console\Input\InputInterface;​ 
-use Symfony\Component\Console\Output\OutputInterface;​ 
- 
-class CommandeTest extends Command { 
- 
-    // Nom de la commande 
-    protected static $defaultName = '​app:​test';​ 
- 
-    protected function configure() { 
-    ​ 
-        $this->​addArgument('​username',​ InputArgument::​REQUIRED,​ 'The username of the user.'​);​ 
-        ​ 
-        // ... 
-    } 
- 
-    public function execute( 
-        InputInterface $input, 
-        OutputInterface $output 
-    ) { 
-        $username = $input->​getArgument('​username'​);​ 
-        ​ 
-        // ... 
-        ​ 
-        $output->​writeln("​Nom d'​utilisateur : " . $username); 
-        ​ 
-        return 0; 
-    } 
-    ​ 
-} 
-</​code>​ 
- 
-La valeur de l'​argument doit être fournie sur la ligne de commande : 
- 
-<code bash> 
-php bin/console app:test marc 
-</​code>​ 
- 
-===== Envoi d'un email ===== 
- 
-<code php /​src/​command/​SendTestEmail.php>​ 
- 
-namespace App\Command;​ 
- 
-use \Swift_Mailer;​ 
-use \Swift_Message;​ 
-use Symfony\Component\Console\Command\Command;​ 
-use Symfony\Component\Console\Input\InputInterface;​ 
-use Symfony\Component\Console\Output\OutputInterface;​ 
- 
-class SendTestEmail extends Command { 
- 
-    protected static $defaultName = '​app:​sendtestemail';​ 
- 
-    private $mailer; 
- 
-    public function __construct(Swift_Mailer $mailer) { 
-        $this->​mailer = $mailer; 
-        parent::​__construct();​ 
-    } 
- 
-    public function execute( 
-        InputInterface $input, 
-        OutputInterface $output 
-    ) { 
-        $message = new Swift_Message();​ 
-        $message->​setFrom('​bernard@example.com'​);​ 
-        $message->​setTo('​jeanine@example.com'​);​ 
-        $message->​setSubject('​Un petit test...'​);​ 
-        $message->​setBody( 
-            "​Salut,​ ceci est un petit test :-)", 
-            "​text/​plain"​ 
-        ); 
- 
-        if($this->​mailer->​send($message)) { 
-            $output->​writeln("​OK,​ le message a été envoyé."​);​ 
-        } else { 
-            $output->​writeln("​Le message n'a pas été envoyé..."​);​ 
-        } 
-        ​ 
-        return 0; 
-    } 
- 
-} 
-</​code>​ 
- 
  
symfony5/console_creer_ses_commandes.1590915582.txt.gz · Dernière modification: 2020/05/31 08:59 par marclebrun