18

我在 src/CollaboratorsBundle/Command 中创建了一个新类,将其命名为 GenerateFormRemindersCommand.php,并将以下代码放入其中:

<?php
namespace Myproject\CollaboratorsBundle\Command;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;

class GenerateFormRemindersCommand extends ContainerAwareCommand{

    protected function configure() {
        $this->setName("generate:formReminders")
             ->setDescription('Send reminders by email to all collaborators with unanswered forms');
    }

    protected function execute(InputInterface $input, OutputInterface $output) {
        //some code
    }
}

执行后,我收到以下消息:

$ php app/console generate:formReminders
[InvalidArgumentException]
Command "generate:formReminders" is not defined.

我检查了我的 AppKernel.php 文件,我的包已在其中注册,并且确实如此。

我试过添加 parent:configure(); 到配置方法,但没有任何结果。

我创建了一些其他可以正常工作的自定义命令。在这种情况下,我不明白我做错了什么。你 ?

提前致谢

4

6 回答 6

73

我遇到了同样的麻烦,因为我命名了没有“命令”后缀的文件。您必须将文件命名为“GenerateFormRemindersCommand.php”。

于 2013-08-05T03:09:30.433 回答
6

我有同样的错误。我遇到的问题是我实现了构造函数来初始化存储库字段而不是initialize()方法。

于 2016-10-13T19:14:42.083 回答
3

如果您将命令配置为服务(用于依赖注入或其他目的)并且该命令具有自定义构造函数 - 您不应该忘记用 标记它console.command,例如

 your_service:
    class: Your\Class
    tags:
        - "console.command"
于 2018-09-18T13:10:09.473 回答
1

您没有将文件放置在正确的位置。

查看您的代码和使用的命名空间以及您已经提到的,您已将文件放在 src/CollaboratorsBundle/Command 中。虽然它必须放在 src/Myproject/CollaboratorsBundle/Command 中。

于 2014-08-21T05:19:39.300 回答
0

执行

bin/console cache:clear
于 2021-09-24T15:54:57.280 回答
0

同样的问题,但因为我忘了extends ContainerAwareCommand

于 2018-06-05T09:25:25.493 回答