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”
- How to create a simple Hello World module for Magento 2
- Magento 2 Block Template Ultimate Guides
- How to Create Module in Magento 2
- How to Create Controller in Magento 2
- How to create CRUD Models in Magento 2
- How to Create Magento 2 Block, Layout and Templates
- Configuration - System.xml
- How To Create Admin Menu In Magento 2
- Admin ACL
- Admin Grid
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.3.x, 2.4.x