How to Add Command line in to Console CLI in Magento 2
In this article, we will find how to add a command line into magento 2 console CLI. Magento 2 add command line use a interface to quick change some features like:
- Installing Magento (and related tasks such as creating or updating the database schema, creating the deployment configuration, and so on)
- Clearing the cache
- Managing indexes, including reindexing
- Creating translation dictionaries and translation packages
- Generating non-existent classes such as factories and interceptors for plug-ins, generating the dependency injection configuration for the object manager
- Deploying static view files
- Creating CSS from LESS
Before we start, please take some minutes to know about the naming in Magento 2 CLI.
We will use an example module Mageplaza_HelloWorld
to demo for this lesson. To add an option to Magento 2 CLI, we will follow by some steps:
Step 1: Define command in di.xml
In di.xml
file, you can use a type with name Magento\Framework\Console\CommandList
to define the command option.
File: app/code/Mageplaza/HelloWorld/etc/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="exampleSayHello" xsi:type="object">Mageplaza\HelloWorld\Console\Sayhello</item>
</argument>
</arguments>
</type>
</config>
This config will declare a command class Sayhello
. This class will define the command name and execute()
method for this command.
Step 2: Create command class
As define in di.xml, we will create a command class:
File: app/code/Mageplaza/HelloWorld/Console/Sayhello.php
<?php
namespace Mageplaza\HelloWorld\Console;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
class Sayhello extends Command
{
protected function configure()
{
$this->setName('example:sayhello');
$this->setDescription('Demo command line');
parent::configure();
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln("Hello World");
}
}
In this function, we will define 2 methods:
configure()
method is used to set the name, description, command line arguments of the magento 2 add command lineexecute()
method will run when we call this command line via console.
After declare this class, please flush Magento cache and type this command:
php magento --list
You will see the list of all commands. Our command will be show here
Now you can run bin/magento example:sayhello
from the command to see the result
Now, we will add the arguments for the command.
Content would be:
<?php
namespace Mageplaza\HelloWorld\Console;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputOption;
class Sayhello extends Command
{
const NAME = 'name';
protected function configure()
{
$options = [
new InputOption(
self::NAME,
null,
InputOption::VALUE_REQUIRED,
'Name'
)
];
$this->setName('example:sayhello')
->setDescription('Demo command line')
->setDefinition($options);
parent::configure();
}
protected function execute(InputInterface $input, OutputInterface $output)
{
if ($name = $input->getOption(self::NAME)) {
$output->writeln("Hello " . $name);
} else {
$output->writeln("Hello World");
}
return $this;
}
}
We defined name
argument for command line in configure()
function and get it in execute()
function.
Please clear cache and run php bin/magento example:sayhello --name="Join"
from the command line to check the result. It will show “Hello Join”
Enjoyed the tutorial? Spread it to your friends!
Jacker Ngo
Magento Developer who is passionate about development and love technology. Jacker’s story
Featured Extensions
People also searched for
- magento 2 add command line
- magento 2 console
- magento 2 command line
- console in magento 2
- cli in magento 2
- command line in Magento 2
- magento 2 create command line
- magento 2 create module command line
- magento 2 command line backup
- magento 2 command line clear cache
- magento 2 command line cron
- magento 2 command line disable compilation
- magento 2 command line export
- magento 2 command line flush cache
- magento 2 command line install
- magento 2 command line indexer
- magento 2 command line import
- magento 2 command line interface
- magento 2 command line reindex
- magento 2 command line reindex all
- magento 2 command line refresh cache
- magento 2 command line script
- magento 2 command line tool
- magento 2 command line upgrade
- magento 2 create command
- magento 2 create cli command
- magento 2 create console command
- magento 2 console command arguments
- magento 2 create custom cli command
- magento 2 run command programmatically
- magento 2 add console command
- magento 2 add cli command
- magento 2 shell script
- magento 2 cli
- magento 2 add command line
- magento 2 commands
- 2.2.x, 2.3.x, 2.4.x