如何在列中显示“选择()”的控制台提示?

在 Laravel 命令中,我正在寻找一种在多列中显示 52 个选项的方法,而不是一个需要滚动的长列表。


这可能吗?


这是我到目前为止的代码:


do {

    $i++;

    $col_name[$i] = $this->ask('Column name?');

    if ($col_name[$i] != null) {

        $col_type[$i] = $this->choice('Column type?', [

            "0" => 'bigIncrements',

            "1" => 'bigInteger',

            "2" => 'binary',

            "3" => 'boolean',

            "4" => 'char',

            "5" => 'date',

            "6" => 'dateTime',

            "7" => 'dateTimeTz',

            "8" => 'decimal',

            ...

            "51" => 'uuid',

            "52" => 'year'

       ], 'string');

    }

} while ($col_name[$i] != null);


holdtom
浏览 154回答 1
1回答

红颜莎娜

Laravel 在内部使用Symfony 控制台组件,特别是SymfonyStyle和QuestionHelper类。由于这些当前仅支持打印“选择”类型输入的列表,因此您无法使其打印表格。您可以做的是将其混合起来并使用一种表示形式作为选项,并使用不同的帮助程序来获取用户输入。即,打印包含所有选项的表格,然后为用户提供自动完成输入以选择其中一个。例如:$options = [           'bigIncrements',           'bigInteger',           'binary',           'boolean',           'char',           'date',           'dateTime',           'dateTimeTz',           'decimal',           // ...           'uuid',           'year'];$rows    = array_chunk($options, 6);$headers = ['Opt 1', 'Opt 2', 'Opt 3', 'Opt 4', 'Opt 5', 'Opt 6'];$this->table($headers, $rows);$columnType = $name = $this->anticipate('Column Type?', $options);"Opt X"我只是在使用假头文件,因为 Laravel 辅助方法比直接使用 Symfony 组件给你的选择更少,但我猜他们会在紧要关头做。
打开App,查看更多内容
随时随地看视频慕课网APP