是否可以将控制台 "Command" 文件夹从其默认目录中移出并避免异常:未定义命令 "name"?

Is it possible to move the console "Command" folder from it's default directory and avoiding the Exception: Command "name" is not defined?

默认情况下,控制台命令文件夹位于:MyProject\MyBundle\Command 并且一切都按预期工作,但是如果我将文件夹移动到另一个目录中,例如:MyProject\MyBundle\MyFolder\Command 在执行命令时它会抛出一个:[InvalidArgumentException] Command "command_name" is not defined.

在互联网上搜索并阅读了可能与此问题相关的所有文档后,我未能找到任何有用的信息...

问题是:是否存在移动该文件夹的模式,否则我将被迫使用默认文件夹?

谢谢!

您可以将其定义为服务:

my_command:
    class: MyProject\MyBundle\MyFolder\Command\MyCommand
    tags:
        -  { name: console.command }

您可以在 Symfony documentation 中阅读有关此方法的更多信息。

看看 Symfony\Component\HttpKernel\Bundle\Bundle::registerCommands

如您所见,Command 目录是硬连接的。没有通过配置更改它的选项。如果您真的真的很想更改文件夹,请在您的 MyBundle class 中覆盖并克隆此方法。但这似乎不值得付出努力。

使用服务(如@Andrey Sobkanyuk)所建议的可能是更好的长期解决方案。