如何在不创建模型的情况下使用标准 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。
根据本书,您假设使用模型中描述的核心验证器和规则来管理 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。