我在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();配置方法,但没有任何结果。
我已经创建了一些其他正常工作的自定义命令。在这种情况下,我不明白我做错了什么。你呢?
提前致谢
答案 0 :(得分:59)
我遇到了同样的麻烦,因为我在没有“Command”后缀的情况下命名了文件。 您必须将文件命名为“GenerateFormRemindersCommand.php”。
答案 1 :(得分:5)
我有同样的错误。我遇到的问题是我实现了构造函数来初始化存储库字段而不是{{1}}方法。
答案 2 :(得分:2)
如果您将命令配置为服务(用于依赖项注入或其他目的),并且该命令具有自定义构造函数,则不要忘记用console.command
对其进行标记,例如
your_service:
class: Your\Class
tags:
- "console.command"
答案 3 :(得分:1)
您尚未将文件放在正确的位置。
查看您已经提到过的代码和使用的命名空间,您已将文件放在src / CollaboratorsBundle / Command中。虽然它必须放在src / Myproject / CollaboratorsBundle / Command。
中答案 4 :(得分:0)
同样的问题,但因为我忘了extends ContainerAwareCommand