如何在不创建模型的情况下使用标准 Yii2 验证器验证 PHP 中的变量?

How to validate a variable in PHP using standard Yii2 validators without creating a model?

根据本书,您假设使用模型中描述的核心验证器和规则来管理 post 请求。如果您想在其他地方使用单独的变量,就会出现问题。

首先你从请求中得到它,即

$var = \Yii::$app->request->post('var');

那么您需要在使用前验证它。例如,它需要是一封电子邮件。 Yii2 有一个标准的验证器'email',但我如何单独应用它?

我假设是这样的:

if( !\Yii::$app->coreValidator( $var, $rule ) )
    return $this->error();

您可以创建简单的验证器

namespace app\components;
use yii\validators\Validator;

class CountryValidator extends Validator
{

    public function validateAttribute($model, $attribute)
    {
        if (!in_array($model->$attribute, ['USA', 'Web'])) {
            $this->addError($model, $attribute, 'The country must be either "USA" or "Web".');
        }
    }
}

这是一份link官方文档Yii2

例如,

$email = 'test@example.com';
$validator = new yii\validators\EmailValidator();

 if($validator->validate($email, $error)) {
  echo 'Email is valid.'; 
 } 
 else {
  echo $error;
 }

Validate Variable Without Model

您可以使用任何验证器或通过扩展验证器创建您自己的验证器 Class。