Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示控制台提示以输入;选择();在专栏里?_Php_Laravel_Symfony_Symfony Console - Fatal编程技术网

Php 如何显示控制台提示以输入;选择();在专栏里?

Php 如何显示控制台提示以输入;选择();在专栏里?,php,laravel,symfony,symfony-console,Php,Laravel,Symfony,Symfony Console,在一个Laravel命令中,我正在寻找一种在多个列中显示52个选项的方法,而不是一个需要滚动的长列表 这可能吗 这是我目前掌握的代码: do { $i++; $col_name[$i] = $this->ask('Column name?'); if ($col_name[$i] != null) { $col_type[$i] = $this->choice('Column type?', [ "0" => 'b

在一个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);

使用内爆来促进它

$choices = [
    'bigIncrements',
    'bigInteger',
    'binary',
    'boolean',
    'char',
    'date',
    'dateTime',
    'dateTimeTz',
    'decimal',
    ...
    'uuid',
    'year'
];
do {
    $col_type = $this->ask("Column Type?\n". implode(', ', $choices));
} while (!in_array($col_type, $choices);
当文本到达行尾时,它将在新行中继续。

Laravel在内部使用,特别是在

由于这些当前仅支持打印“选择”类型输入的列表,因此无法使其打印表格

您可以做的是,将其混合一点,并使用一种表示方式来表示选项,并使用不同的助手来获取用户输入

名义上,打印一个包含所有选项的表格,然后给用户一个自动完成输入以选择其中一个选项

例如:


我之所以使用带有“
”Opt X“
的假标题,是因为Laravel helper方法提供的选项比直接使用Symfony组件少,但我想它们会在紧要关头使用。

可能是因为列意味着表,而您提供了一种在一个大而丑陋的段落中输出此内容的方法。但我只是在猜测。@Jakumi你每行要用多少个项目来输出?两个月后,它将回到线,像一个“丑陋”的混乱。
$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);