为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
holdtom 2021-12-03 09:52:54
在 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);
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

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 组件给你的选择更少,但我猜他们会在紧要关头做。


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信