Magento 2 Add Command Line

Discussion in 'Các mặt hàng khác' started by KangPaper, Aug 23, 2016.

  1. KangPaper

    KangPaper Thành Viên

    In this article, we will find how to add a command line into magento 2 console CLI. Magento 2 use a command line interface to quick change some features like enable/disable cache, setup sample data… Before we start, please take some minutes to know about the naming in Magento 2 CLI.

    We will use an example module Mageplaza_Example 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');
    }
    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 and the description of the magento 2 add command line
    • execute() 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

    [​IMG]

    Now you can run the command to see the result

    [​IMG]