gpt4 book ai didi

laravel - 如何验证控制台命令提示符输入

转载 作者:行者123 更新时间:2023-12-05 08:42:08 27 4
gpt4 key购买 nike

在控制台命令之后,我提示输入。我想验证用户输入。我该怎么做?

我检查了this plugin .但它看起来像是在验证参数和选项。不是交互式输入。

CreateClient.php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class CreateClient extends Command {
...

public function handle() {
$name = $this->ask('Enter name ');
$email = $this->ask('Enter email ');
$date = $this->ask('Enter date [Eg: 2016-01-01 00:00:00] ');

// Validate user input
$this->info('Validating user inputs');

// How to validate email & date format ?
}
}

更新

是的,我知道 Validator,但担心的是验证会停止用户旅程。用户从头开始重新启动。是否可以为每个问题附加验证,以便立即验证并提示再次输入。

以下是我在未输入任何值时注意到的内容,我想知道如何提供更多验证规则。

enter image description here

提前致谢。

最佳答案

下面是另一种使用 Laravel 验证器的方法。

我的自定义方法 validate_cmd 有两个参数:

  1. 作为匿名函数的命令方法(询问、 secret 、选择...)
  2. 一组规则

如果验证失败,将再次调用 Command 方法。

当然你会想把它放在一个特征中。

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Validator;

class CreateClient extends Command {

public function handle() {

$name = $this->validate_cmd(function() {
return $this->ask('Enter name');
}, ['name','required']);

$email = $this->validate_cmd(function() {
return $this->ask('Enter email');
}, ['email','required|email']);

$date = $this->validate_cmd(function() {
return $this->ask('Enter date [Eg: 2016-01-01 00:00:00]');
}, ['date','required']);

}

/**
* Validate an input.
*
* @param mixed $method
* @param array $rules
* @return string
*/
public function validate_cmd($method, $rules)
{
$value = $method();
$validate = $this->validateInput($rules, $value);

if ($validate !== true) {
$this->warn($validate);
$value = $this->validate_cmd($method, $rules);
}
return $value;
}

public function validateInput($rules, $value)
{

$validator = Validator::make([$rules[0] => $value], [ $rules[0] => $rules[1] ]);

if ($validator->fails()) {
$error = $validator->errors();
return $error->first($rules[0]);
}else{
return true;
}

}

}

关于laravel - 如何验证控制台命令提示符输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44426367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com