Drush是个能让Drupal变简单的好东西。他不仅带有大量的有用工具,同时为用户提供了接口,让用户可以轻松实现自己的命令。如果你需要为你的模块创建Drush命令,只要创建一个包含这些功能命令即可。
在这个教程中,我们会演示如何在这些命令中获取用户反馈。这里我不会提到参数或选项之类的东西。这里主要讲述的是,如何获取一个是或否的确认,或者如何提示用户进行一个选择。另外,我们也会说说如何获取用户输入的文本。
首先让我们看一下*drush_module_name_example_command()*这个回调函数:
/**
* Callback function for the example command
*/
function drush_module_name_example_command() {
// Command code we will look at
drush_print('Hello world!');
}
##确认
首先我们要试验的是如何获取用户的确认。在我们的例子中,我们会请用户确认是否显示内容,可以用Drush API这样实现:
if (drush_confirm('Are you sure you want 'Hello world' printed to the screen?')) {
drush_print('Hello world!');
}
else {
drush_user_abort();
}
这里有两个新函数:*drush_confirm()*这个函数显示一个问题,并尝试从用户合理获取y或者n的反馈。如果回复是y,这个函数会返回true,意味着我们输出的提示获得了确认;如果回应是n,会调用*drush_user_abort()*。这也是推荐的中止Drush命令的方式。
##选项
接下来我们来看看,如何让用户从一系列列表中进行选择。在我们的超级例子Hello World中,我们将给用户提供一系列的选择,让用户决定Drush对谁说Hello。代码实现如下:
$options = array(
'world' => 'World',
'univers' => 'Univers',
'planet' => 'Planet',
);
$choice = drush_choice($options, dt('Who do you want to say hello to?'));
if ($choice) {
drush_print(dt('Hello @choice!', array('@choice' => $options[$choice])));
}
上面的代码是做什么的呢?首先,我们创建了一个用于保存选项的*$options*数组。这个数组的键和值分别是选项的机器名称和描述。然后我们调用*drush_choice(),两个参数分别是上面的$option*和用于提示用户的问题。
当命令运行时,这个函数会返回用户选择项目的代码。接下来我们判断这个值是否存在,然后输出这个字符串。我们利用$option数组获取到用户选择内容。
##用户输入内容
第三种输入是自由输入的文本。当然这类内容的输入应该进行更加严格的校验,防止恶意输入影响系统。下面我们提示用户来输入他想要问好的目标:
$value = drush_prompt(dt('Who do you want to say hello to?'));
drush_print(dt('Hello @value!', array('@value' => $value)));
这个例子非常简单。当命令运行时,*drush_prompt()*函数会在终端显示我们输入的字符串。返回值由用户输入,接下来我们会输出这个返回值。不过请注意这只是示例代码,在真正使用这一功能时,请对用户的输入进行严格的检查。
##结论
这里介绍了三种不同的获取用户输入的Drush。前两种属于最常用的方式,第三种也有他的用武之地。当然——注意安全!
文章来源于互联网:Drush提示用户输入的三种方式