我的 Symfony 3 项目中有一个自定义命令。
此命令询问一些问题,例如 Bundle Name.
$io = new SymfonyStyle($input, $output);
$question = new Question('Please enter the name of your bundle: ', 'AppBundle');
$bundle = $io->askQuestion($question);
此代码运行良好,但如果用户输入错误,左箭头不起作用。
左箭头给出 ^[[D 和右 ^[[C
有没有办法在用户按下箭头键时移动光标?
您可以通过使用 Symfony 样式 (https://symfony.com/doc/current/console/style.html) 来做到这一点,然后您可以启用箭头键支持并在自定义命令中移动光标。
$io = new SymfonyStyle($input, $output);
//This is where you enable arrow key support and move the cursor
$io->getInput()->setInteractive(true);
$io->setInputStty(['echo', 'icanon', 'opost', 'onlcr']);
$question = new Question('Please enter the name of your bundle: ', 'AppBundle');
$bundle = $io->askQuestion($question);
// Reset the input config
$io->getInput()->setInteractive(false);
$io->setInputStty([]);