You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Symfony 3控制器中获取所有可用Console命令列表

获取Symfony可用Console命令列表并传递给Twig

实现步骤

1. 在控制器中注入Console Application并获取命令列表

Symfony的Symfony\Component\Console\Application实例管理着所有注册的Console命令,直接在控制器中注入该服务即可获取命令列表:

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Console\Application;
use Symfony\Component\HttpFoundation\Response;

class ConsoleCommandController extends AbstractController
{
    public function listCommands(Application $consoleApplication): Response
    {
        // 获取所有已注册的命令
        $commands = $consoleApplication->all();
        
        // 整理命令的关键信息(名称、描述、帮助文本)
        $commandList = [];
        foreach ($commands as $command) {
            $commandList[] = [
                'name' => $command->getName(),
                'description' => $command->getDescription() ?: '无描述',
                'help' => $command->getHelp()
            ];
        }
        
        // 将命令列表传递给Twig模板
        return $this->render('console/commands.html.twig', [
            'commands' => $commandList
        ]);
    }
}

2. 在Twig模板中渲染命令列表

创建对应的Twig模板(比如templates/console/commands.html.twig),遍历命令列表展示信息:

<h2>可用Console命令</h2>
<div class="command-list">
    {% for command in commands %}
        <div class="command-item">
            <h3><strong>{{ command.name }}</strong></h3>
            <p>{{ command.description }}</p>
            {% if command.help %}
                <details>
                    <summary>查看帮助</summary>
                    <pre>{{ command.help }}</pre>
                </details>
            {% endif %}
        </div>
    {% endfor %}
</div>

注意事项

  • Symfony 5及以上版本中,Application服务默认支持自动注入,无需额外配置。
  • 如果需要过滤命令(比如只展示自定义命令),可以在遍历$commands时通过$command->getName()进行筛选,比如排除debug:、list等内置命令。

内容的提问来源于stack exchange,提问作者TheTom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 02:18:20