在 Magento 2 中创建自定义 CLI 命令让我出错

我是 Magento 2 的新手,我正在创建一个打印 hello world 的自定义 CLI 命令,但是当我看到列表时 php bin/magento list,它没有显示我添加的命令,而是向我抛出了这个错误:


 [Symfony\Component\Console\Exception\CommandNotFoundException]  

  There are no commands defined in the "training" namespace.  

以下是我为使 CLI 命令正常工作所做的事情,我不认为我错过了一些东西:


应用程序/代码/SimplifiedMagento/FirstModule/Console/Command/HelloWorld.php


<?php



namespace SimplifiedMagento\FirstModule\Console\Command;


use Symfony\Component\Console\Command\Command;

use Symfony\Component\Console\Input\InputInterface;

use Symfony\Component\Console\Output\OutputInterface;




class HelloWorld extends Command

{

    public function  configure()

    {

        $this->setName("training:hello_world");

        $this->setDescription("the command prints out hello world");

        parent::configure();


    }


    public function execute(InputInterface $input, OutputInterface $output)

    {

        $output->writeln('Hello World');

    }

}

应用程序/代码/SimplifiedMagento/FirstModule/etc/frontend/di.xml


<type name="Magento\Framework\Console\CommandList">

                <arguments>

                        <argument name="commands" xsi:type="array">

                                <item name="hello_world" xsi:type="object">

                                        SimplifiedMagento\FirstModule\Console\Command\HelloWorld</item>

                        </argument>

                </arguments>

        </type>

我不确定我哪里出错了,有人可以帮我吗?


我的命令基本上会说training:hello_world


胡子哥哥
浏览 96回答 1
1回答

慕斯709654

经过一番研究,我发现我必须在我的 etc 文件夹中创建一个单独的 di.xml 文件,而不是 etc/frontend/di.xml我已经剪切了命令的 di.xml 文件的代码,并在 etc 文件夹中创建了一个新的文件 di.xml 文件并保留它并且它可以工作。<type name="Magento\Framework\Console\CommandList">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <arguments>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <argument name="commands" xsi:type="array">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <item name="hello_world" xsi:type="object">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SimplifiedMagento\FirstModule\Console\Command\HelloWorld</item>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </argument>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </arguments>&nbsp; &nbsp; &nbsp; &nbsp; </type>
打开App,查看更多内容
随时随地看视频慕课网APP