如何在作曲家的askAndValid函数中验证输入



嘿,伙计们,我一直在破坏互联网,试图找到一些线索。

我正在尝试运行一个composer安装后cmd脚本

我当前的代码-

namespace CoreScripts;
define('DS', DIRECTORY_SEPARATOR);
use ComposerScriptEvent;
use ComposerConsoleHtmlOutputFormatter;

class installer {
   public static function install(Event $event){
    $callback = (function($arg){
        if(is_dir($arg)){
            return true;
        }else{
            return false;
        }
    });
    $composer = $event->getComposer();
    $IO = $event->getIO();
    $currentDir = getcwd();
    $resp = $IO->ask('Is `'.$currentDir.'` the path to project root? :', true);
    var_dump($resp);
    if($resp === false || strtolower($resp) === 'no'){
        $resp2 = $IO->askAndValidate('Please enter the path to project root :', $callback ,3);
        define('_pROOT', $resp2);
    }else{
        define('_pROOT', $currentDir);
    }
    print_r(_pROOT);
  }
}

在这里,我试图从控制台获取用户输入并进行验证。代码在$callback函数之前正确执行。但在CCD_ 2上的回调函数中,它没有循环回到问题,而是停止执行。

所以我的问题是-

  1. 如果参数不符合我的验证要求,如果不是false,我该返回什么。

  2. 另外,我想帮助的另一个想法是弄清楚如何为输出赋予颜色(目前默认控制台为白色),因为我希望我的问题是绿色的。PS-我确实找到了HtmlOutputFormatter类,但不知道如何使用它来更改颜色。我知道有composerAPI文档,但这没有帮助。

有人能帮我吗?

以下https://getcomposer.org/apidoc/master/Composer/IO/IOInterface.html#method_askAndValidate只要验证失败,就应该抛出一个\Exception。否则,从用户输入返回数据。我想您可以更改它们,但这应该在验证之后在回调之外进行处理。

相关内容

  • 没有找到相关文章

最新更新