如何从控制器调用命令

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

如何从控制器调用命令

控制台组件文档欧宝体育电话介绍如何创建控制台命令。本文介绍了如何从控制器直接使用控制台命令。

您可能需要调用一些仅在控制台命令中可用的函数。通常,您应该重构命令并将一些逻辑移动到可以在控制器中重用的服务中。但是,当该命令是第三方库的一部分时,您不希望修改或复制它们的代码。相反,您可以直接从控制器运行该命令。

谨慎

与从控制台直接调用相比,由于请求堆栈开销,从控制器调用命令会有轻微的性能影响。

假设你想运行调试:树枝在你的控制器内部:

12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
/ / src /控制器/ DebugTwigController.php名称空间应用程序控制器使用欧宝娱乐app下载地址FrameworkBundle控制台应用程序使用欧宝娱乐app下载地址FrameworkBundle控制器AbstractController使用欧宝娱乐app下载地址组件控制台输入ArrayInput使用欧宝娱乐app下载地址组件控制台输出BufferedOutput使用欧宝娱乐app下载地址组件HttpFoundation响应使用欧宝娱乐app下载地址组件HttpKernelKernelInterfaceDebugTwigController扩展AbstractController公共函数debugTwig(KernelInterface内核响应应用程序应用程序(内核);应用程序->setAutoExit ();输入ArrayInput ([“命令”= >调试:树枝的//(可选)定义命令参数的值“fooArgument”= >“barValue”//(可选)将选项传递给命令“——酒吧”= >“fooValue”]);//你可以使用NullOutput()如果你不需要输出输出BufferedOutput ();应用程序->运行(输入输出);//返回输出,如果你使用NullOutput()内容输出->fetch ();//返回新的响应(""),如果你使用NullOutput()返回响应(内容);}}

显示彩色命令输出

通过告诉BufferedOutput它通过第二个参数进行装饰,它将返回Ansi颜色编码的内容。的SensioLabs anitohtml转换器可以用来将其转换为彩色HTML。

首先,要求包:

1
编写器需要sensiolabs/ansi-to-html

现在,在你的控制器中使用它:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/ / src /控制器/ DebugTwigController.php名称空间应用程序控制器使用SensioLabsAnsiConverterAnsiToHtmlConverter使用欧宝娱乐app下载地址组件控制台输出BufferedOutput使用欧宝娱乐app下载地址组件控制台输出OutputInterface使用欧宝娱乐app下载地址组件HttpFoundation响应/ /……DebugTwigController扩展AbstractController公共函数sendSpool(int消息10响应/ /……输出BufferedOutput (OutputInterface::VERBOSITY_NORMAL,真正的//修饰为true);/ /……//返回输出转换器AnsiToHtmlConverter ();内容输出->fetch ();返回响应(转换器->转换(内容));}}

AnsiToHtmlConverter也可以注册作为树枝扩展,并支持可选主题。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
欧宝娱乐app下载地址Symfony 5.3支持通过JoliCode