继承 | yii\base\DynamicModel » yii\base\Model » yii\base\Component » yii\base\Object |
---|---|
可用自版本 | 2.0 |
动态模型是一个模型类主要用于支持临时数据验证。
动态模型的典型用法是这样的,
public function actionSearch($name, $email)
{
$model = DynamicModel::validateData(compact('name', 'email'), [
[['name', 'email'], 'string', 'max' => 128],
['email', 'email'],
]);
if ($model->hasErrors()) {
// validation fails
} else {
// validation succeeds
}
}
上面的例子展示了如何验证$name
和$email
的帮助下美元动态模型。validateData()方法创建一个动态模型的实例,使用给定的数据定义了属性(名称和电子邮件在这个例子中),然后调用yii\base\Model::validate().
你可以检查验证结果\yii\base\hasErrors(),像你一样做一个正常的模式。你也可以通过模型实例访问定义的动态属性,例如,$model->name
and $model->email
.。
或者,您可以使用下面的更“经典”的语法来执行特定数据验证:
$model = new DynamicModel(compact('name', 'email'));
$model->addRule(['name', 'email'], 'string', ['max' => 128])
->addRule('email', 'email')
->validate();
动态模型实现上述特殊数据验证功能通过支持所谓的“动态属性”。它基本上允许动态定义一个属性通过其构造函数或 defineAttribute().
公共方法
方法详情
__construct() public 方法
Constructors.
public void __construct ( array $attributes = [], $config = [] ) | ||
$attributes | array | 动态属性(名称-值对,或名字)被定义 |
$config | array | 配置应用到这个对象数组。 |
__get() public 方法
public void __get ( $name ) | ||
$name |
__isset() public 方法
public void __isset ( $name ) | ||
$name |
__set() public 方法
public void __set ( $name, $value ) | ||
$name | ||
$value |
__unset() public 方法
public void __unset ( $name ) | ||
$name |
addRule() public 方法
这个模型添加一个验证规则。
你也可以直接操作 \yii\base\validators来添加或删除验证规则。这种方法提供了一个捷径。
public $this addRule ( $attributes, $validator, $options = [] ) | ||
$attributes | string|array | The attribute(s)的验证规则 |
$validator | mixed | 规则的验证器。这可能是一个内置验证器名称、方法模型类的名称,一个匿名函数,或者一个确认器类的名字。 |
$options | array | 选项(名称-值对)适用于验证器 |
return | $this | 模型本身 |
---|
attributes() public 方法
public void attributes ( ) |
defineAttribute() public 方法
定义了一个属性。
public void defineAttribute ( $name, $value = null ) | ||
$name | string | 属性名称 |
$value | mixed | 属性值 |
undefineAttribute() public 方法
未定义的属性。
public void undefineAttribute ( $name ) | ||
$name | string | 属性名称 |
validateData() public static 方法
验证给定的数据与指定的验证规则。
该方法将创建一个动态模型实例,验证数据填充它,创建指定的验证规则,然后用这些规则验证数据。
public static static validateData ( array $data, $rules = [] ) | ||
$data | array | 验证数据(名称-值对) |
$rules | array | The validation rules. Please refer to yii\base\Model::rules() on the format of this parameter. 验证规则。请参阅yii\base\Model::rules() 这个参数的格式。 |
return | static | 包含数据模型实例验证 |
---|---|---|
throws | yii\base\InvalidConfigException | 如果没有指定一个验证规则正确。 |