您的位置:首页 > 编程语言 > PHP开发

Class yii\base\Model

2017-03-08 00:00 411 查看

类yii \ \模型基础

所有类 | 方法 | 事件 | 常量

继承yii\base\Model » yii\base\Component » yii\base\Object
实现ArrayAccess, IteratorAggregate, yii\base\Arrayable
Uses Traitsyii\base\ArrayableTrait
可用自版本2.0
模型是数据模型的基类。

模型实现以下常用的功能:

属性声明:默认情况下,每一个公共类成员被认为是一个模型属性

属性标签:每个属性可能与一个标签显示的目的

大规模属性赋值

基于场景的验证

当执行数据验证模型还提出了以下事件:

EVENT_BEFORE_VALIDATE:一个事件引发了validate()

EVENT_AFTER_VALIDATE: 一个事件提出的验证

你可以直接使用模型来存储数据,用定制或扩展它。

更多细节和使用信息模型,请参阅指南文章模型

公共方法

隐藏继承方法

方法描述定义在
activeAttributes()返回属性名称,验证在当前场景.yii\base\Model
addError()添加一个新的错误指定的属性。yii\base\Model
addErrors()错误的添加了一个列表。yii\base\Model
afterValidate()验证结束后调用该方法。yii\base\Model
attributeHints()返回属性提示。yii\base\Model
attributeLabels()返回属性标签。yii\base\Model
attributes()返回属性名称的列表。yii\base\Model
beforeValidate()验证开始前调用该方法。yii\base\Model
clearErrors()为所有属性或一个单一属性删除错误yii\base\Model
createValidators()创建验证器对象基于验证规则中指定的 rules().yii\base\Model
fields()返回的字段列表应该返回默认的\yii\base\toArray() 当没有指定特定的字段。
yii\base\Model
formName()返回表单名称,应该使用这个模型类.yii\base\Model
generateAttributeLabel()生成一个用户友好的属性标签的基础上为属性名称。yii\base\Model
getActiveValidators()返回验证器适用于当前\yii\base\scenario
yii\base\Model
getAttributeHint()返回指定的属性的文本提示。yii\base\Model
getAttributeLabel()返回指定的属性的文本标签。yii\base\Model
getAttributes()返回属性值。yii\base\Model
getErrors()返回所有属性的错误或一个属性。yii\base\Model
getFirstError()返回指定的属性的第一个错误。yii\base\Model
getFirstErrors()返回第一个错误的每个属性模型。yii\base\Model
getIterator()返回一个迭代器遍历属性的模型。yii\base\Model
getScenario()返回此模型中使用的场景。yii\base\Model
getValidators()返回所有中声明的验证器rules().yii\base\Model
hasErrors()返回一个值指示是否有任何验证错误。yii\base\Model
isAttributeActive()返回一个值指示是否活跃在当前场景的属性yii\base\Model
isAttributeRequired()返回一个值指示是否需要的属性.yii\base\Model
isAttributeSafe()返回一个值指示是否属性是安全的大规模作业。yii\base\Model
load()与输入数据填充模型.yii\base\Model
loadMultiple()填充的一组模型与最终用户的数据。yii\base\Model
offsetExists()返回是否有指定偏移位置的一个元素。yii\base\Model
offsetGet()返回指定偏移位置的元素。yii\base\Model
offsetSet()设置指定偏移位置的元素。yii\base\Model
offsetUnset()设置指定偏移位置的元素值为null。yii\base\Model
onUnsafeAttribute()调用该方法时,一个不安全的属性被分配。yii\base\Model
rules()返回属性的验证规则。yii\base\Model
safeAttributes()返回属性名称,是安全的大规模分配在当前场景。yii\base\Model
scenarios()返回一个列表的场景和相应的活动属性。yii\base\Model
setAttributes()设置属性值在一个巨大的方式。yii\base\Model
setScenario()集的场景模型。yii\base\Model
validate()执行数据验证yii\base\Model
validateMultiple()验证多个模型。yii\base\Model

事件

隐藏继承事件

事件类型描述定义在
EVENT_AFTER_VALIDATEyii\base\Event事件引发的validate()yii\base\Model
EVENT_BEFORE_VALIDATEyii\base\ModelEvent事件开始时提出的验证 validate().yii\base\Model

常量

隐藏继承常量

常量描述定义在
SCENARIO_DEFAULT'default'默认场景的名称。yii\base\Model

方法详情

activeAttributes() public 方法

返回属性名称,验证在当前场景。

public string[] activeAttributes ( )
returnstring[]安全属性名称
addError() public 方法

添加一个新的错误指定的属性。

public void addError ( $attribute, $error = '' )
$attributestring属性名称
$errorstring新的错误消息
addErrors() public 方法 (可用自版本 2.0.2)

错误的添加了一个列表。

public void addErrors ( array $items )
$itemsarray错误的列表。数组的键必须属性名称。数组的值应该是错误消息。如果属性有多个错误,这些错误必须被给予一个数组。你可以使用的结果getErrors()为这个参数的值。
afterValidate() public 方法

验证结束后调用该方法

默认实现提出了一个
afterValidate
事件。你可以重写这个方法做后处理后验证。确保调用父实现,这样可以提高。

public void afterValidate ( )
attributeHints() public 方法 (可用自版本 2.0.4)

返回属性提示。

主要用于显示目的属性提示。例如,给定一个属性
isPublic
,我们可以声明一个提示后是否应该为没有登录用户是可见的,它提供了用户友好的描述属性的意义和可以显示给终端用户。

与标签提示不会生成,如果省略其显式声明。

请注意,为了继承父类中定义的提示,子类需要父母与孩子提示提示合并使用等功能
array_merge()
.

public array attributeHints ( )
returnarrayAttribute hints (name => hint)
attributeLabels() public 方法

返回属性标签。

属性标签主要用于显示目的。例如,给定一个属性firstName,我们可以声明一个标签第一Namewhich更具用户友好性,并可以显示给终端用户.

默认情况下使用generateAttributeLabel生成一个generateAttributeLabel()。这种方法允许您显式地指定属性标签。

请注意,为了继承父类中定义的标签,一个子类需要合并父与子标签标签使用等功能
array_merge()
.

参见 generateAttributeLabel().

public array attributeLabels ( )
returnarrayAttribute labels (name => label)
attributes() public 方法

返回属性名称的列表。

默认情况下,这个方法返回所有公共类的非静态属性。你可以重写这个方法来改变默认的行为

public array attributes ( )
returnarrayList of attribute names.
beforeValidate() public 方法

验证开始前调用该方法.

默认实现提出了一个beforeValidate事件。你可以重写这个方法做初步检查前验证。确保调用父实现,这样可以提高。

public boolean beforeValidate ( )
returnboolean验证是否应该被执行。默认值为true。如果返回错误,验证将停止和模型被认为是无效的。
clearErrors() public 方法

为所有属性或一个单一属性删除错误.

public void clearErrors ( $attribute = null )
$attributestring属性名称。用零来消除所有属性的错误.
createValidators() public 方法

创建验证器对象基于验证规则中指定的 rules().

不像getValidators(),每次调用这个方法时,一个新的验证器将返回的列表。

public ArrayObject createValidators ( )
returnArrayObject验证器
throwsyii\base\InvalidConfigException如果任何验证规则配置是无效的
fields() public 方法

返回的字段列表应该返回默认的\ yii \基地\ toArray()当没有指定特定的字段。

一个字段是一个名叫在返回的数组元素 \yii\base\toArray().

此方法应该返回一个数组字段名和字段定义。如果是前者,字段名称将被视为一个对象属性名称的值将被用作字段值。如果是后者,数组的键应该是字段名,而数组的值应该是对应的字段定义可以是一个对象的属性名或一个PHP调用返回相应的字段值。可赎回的签名应该是:

function ($model, $field) {
// return field value
}

例如,下面的代码声明四个字段:

email
: 字段名是一样的属性名
email
;

firstName和lastName:firstName和lastName字段名称,和它们的值从first_nameand last_name获得属性;

fullName:fullName字段名。它的值是通过连接first_name和last_name。

return [
'email',
'firstName' => 'first_name',
'lastName' => 'last_name',
'fullName' => function ($model) {
return $model->first_name . ' ' . $model->last_name;
},
];


在这个方法中,您可能还想返回不同的字段列表基于一些上下文信息。例如,根据\yii\base\scenario或当前应用程序用户的特权,你可能会返回不同的字段或过滤掉一些字段可见。

该方法返回属性的默认实现attributes() ()相同索引的属性名称。

参见 \yii\base\toArray().

public array fields ( )
returnarray字段名和字段定义的列表。
formName() public 方法

返回表单名称,应该使用这个模型类。

所使用的表单名称主要是 yii\widgets\ActiveForm来决定如何输入字段名称属性的一个模型。如果表单的名字是“A”和一个属性的名字是“b”,然后输入相应的名称是“”。如果表单名称是一个空字符串,然后输入名称是“b”

上述命名模式的目的是,包含多个不同形式模型,每个模型的属性分组赋的post数据,很容易区分他们。

默认情况下,这个方法返回模型类名称(没有名称空间的一部分)作为表单名称。你可以覆盖它当模型中使用不同的形式。

参见 load().

public string [b]formName ( )
returnstring这个模型类的名称。
generateAttributeLabel() public 方法

生成一个用户友好的属性标签的基础上为属性名称。

这是通过替换下划线,破折号和点空白,改变每个单词的第一个字母大写。例如,“department_name”或“DepartmentName”将生成“Department Name”

public string generateAttributeLabel ( $name )
$namestring列名
returnstring属性标签
getActiveValidators() public 方法

返回验证器适用于当前 \yii\base\scenario.

public yii\validators\Validator[] getActiveValidators ( $attribute = null )
$attributestring属性的名称,其适用的验证器应该返回。如果这是零,模型中所有属性的验证器将被归还。
returnyii\validators\Validator[]验证器适用于当前 \yii\base\scenario.
getAttributeHint() public 方法 (可用自版本 2.0.4)

返回指定的属性的文本提示

参见 attributeHints().

public string getAttributeHint ( $attribute )
$attributestringThe attribute name
returnstringThe attribute hint
getAttributeLabel() public 方法

返回指定的属性的文本标签。

参见:

generateAttributeLabel()

attributeLabels()

public string getAttributeLabel ( $attribute )
$attributestring属性名称
returnstring属性标签
getAttributes() public 方法

Returns attribute values.

public array getAttributes ( $names = null, $except = [] )
$namesarray需要返回的属性值列表。默认为零,这意味着所有属性中列出的attributes()将返回。如果它是一个数组,数组中只有属性将被归还
$exceptarray不应该返回属性的值的列表。
returnarray属性值(名称= >值)。
getErrors() public 方法

返回所有属性的错误或一个属性。

参见:

getFirstErrors()

getFirstError()

public array getErrors ( $attribute = null )
$attributestring属性名称。使用null来检索所有属性的错误。
returnarray错误的所有属性或指定的属性。如果没有错误则返回空数组。请注意,为所有属性返回错误时,结果是一个二维数组,如下:
[
'username' => [
'Username is required.',
'Username must contain only word characters.',
],
'email' => [
'Email address is invalid.',
]
]
getFirstError() public 方法

返回指定的属性的第一个错误

参见:

getErrors()

getFirstErrors()

public string getFirstError ( $attribute )
$attributestring属性名称.
returnstring错误消息。如果没有错误返回Null.
getFirstErrors() public 方法

返回第一个错误的每个属性模型.

参见:

getErrors()

getFirstError()

public array getFirstErrors ( )
returnarray第一个错误。数组的键属性名称,数组值相应的错误消息。将返回一个空数组,如果没有错误.
getIterator() public 方法

返回一个迭代器遍历属性的模型.

这个方法是IteratorAggregate所需的接口

public ArrayIterator getIterator ( )
returnArrayIterator迭代器遍历列表中的项目
getScenario() public 方法

返回此模型中使用的场景。

场景影响验证是如何执行的,以及哪些属性可以大规模分配。

public string getScenario ( )
returnstring这个模型的场景。默认为 SCENARIO_DEFAULT.
getValidators() public 方法

返回所有rules()中声明的验证规则。

这种方法不同于getActiveValidators(),后者只返回验证器适用于当前

因为这个方法返回一个ArrayObject对象,通过插入或删除,你可以操纵验证器(用于模型的行为)。例如,

$model->validators[] = $newValidator;

public ArrayObject|yii\validators\Validator[] getValidators ( )
returnArrayObject|yii\validators\Validator[]中声明的所有验证器模型。
hasErrors() public 方法

返回一个值指示是否有任何验证错误。

public boolean hasErrors ( $attribute = null )
$attributestring|null属性名称。使用null检查所有属性。
returnboolean是否有任何错误。
isAttributeActive() public 方法

返回一个值指示是否活跃在当前场景的属性.

参见 activeAttributes().

public boolean isAttributeActive ( $attribute )
$attributestring属性名称
returnboolean在当前的场景属性是否活跃
isAttributeRequired() public 方法

返回一个值指示是否需要的属性。

这是由检查如果所需的属性与一个验证规则在当前 \yii\base\scenario.

注意,当验证器条件验证应用使用yii\validators\RequiredValidator::$when这个方法将return false不管条件之前,因为它可能被称为模型加载数据。

public boolean isAttributeRequired ( $attribute )
$attributestring属性名称
returnboolean是否需要的属性
isAttributeSafe() public 方法

返回一个值指示是否属性是安全的大规模作业.

参见 safeAttributes().

public boolean isAttributeSafe ( $attribute )
$attributestring属性名称
returnboolean属性是否安全的大规模作业
load() public 方法

与输入数据填充模型.

这种方法提供了一个方便的快捷方式:

if (isset($_POST['FormName'])) {
$model->attributes = $_POST['FormName'];
if ($model->save()) {
// handle success
}
}

load()
()可以写成:

if ($model->load($_POST) && $model->save()) {
// handle success
}

load()从模型的FormName获得‘FormName’()方法(你可能覆盖),除非美元FormName参数。如果表单名称为空、load()填充模型与美元的整个数据,而不是$ data[' FormName ']。

注意,数据被setAttributes填充受安全 setAttributes().

public boolean load ( $data, $formName = null )
$dataarray数组的数据load,通常$ _POST或$ _GET
$formNamestring表单名称使用加载数据到模型中。如果没有设置,formName使用的是()。
returnboolean是否加载
load()
发现预期的形式在元
$data

loadMultiple() public static 方法

填充的一组模型与最终用户的数据.

主要用于收集表格数据输入。每个模型的数据加载是
$data[formName][index]
,,在formName指formName的价值(),和索引的索引数组模型的模型。如果formName()为空,
$data[index]
将用于填充每个模型。每个模型的数据填充是setAttributes()的安全检查

public static boolean loadMultiple ( $models, $data, $formName = null )
$modelsarray填充模型。请注意,所有的模型都应该有相同的类.
$dataarray数组的数据。这通常是
$_POST
$_GET
,,但也可以是任何有效的数组提供的最终用户。
$formNamestring表单名称用于将数据加载到模型。如果没有设置,那么将使用formName()
$models
中的第一个模型的价值。这个参数自2.0.1版本是可用的
returnboolean至少一个模型是否成功地填充。
offsetExists() public 方法

返回是否有指定偏移位置的一个元素.

该方法所需的SPL ArrayAccess接口。时隐式地调用您使用类似
isset($model[$offset])
.

public boolean offsetExists ( $offset )
$offsetmixed检查的抵消.
returnboolean是否存在一个偏移量.
offsetGet() public 方法

返回指定偏移位置的元素。

该方法所需的SPL ArrayAccess接口。时隐式地调用您使用
$value = $model[$offset];
.

public mixed offsetGet ( $offset )
$offsetmixed抵消检索元素.
returnmixed元素在抵消,零如果没有找到元素的偏移量
offsetSet() public 方法

设置指定偏移位置的元素。

该方法所需的SPL ArrayAccess接口。时隐式地调用您使用
$model[$offset] = $item;
.

public void offsetSet ( $offset, $item )
$offsetinteger偏移量元素
$itemmixed元素的值
offsetUnset() public 方法

设置指定偏移位置的元素值为null。

该方法所需的SPL ArrayAccess接口。时隐式地调用您使用类似的
unset($model[$offset])
.

public void offsetUnset ( $offset )
$offsetmixed设置元素的偏移量
onUnsafeAttribute() public 方法

调用该方法时,一个不安全的属性被分配。

的默认实现将日志如果YII_DEBUG是一条警告消息。它没有否则。

public void onUnsafeAttribute ( $name, $value )
$namestring不安全的属性名称
$valuemixed属性值
rules() public 方法

返回属性的验证规则。

验证规则使用validate(),以检查是否属性值是有效的。子类可以重写此方法声明不同的验证规则.

每个规则是一个数组使用以下结构:

[
['attribute1', 'attribute2'],
'validator type',
'on' => ['scenario1', 'scenario2'],
//...other parameters...
]

where

属性列表:要求,指定的属性数组来进行验证,对于单属性可以通过一个字符串;

验证器类型:要求,指定验证器使用。它可以是一个内置验证器名称、方法模型类的名称,一个匿名函数,或者确认器类的名字.

可选的,数组指定 \yii\base\scenario验证规则可以应用。如果没有设置这个选项,规则将适用于所有情况

可以指定额外的名称-值对初始化相应的验证器属性。请参考个人为可能的属性确认器类的API.

一个验证器可以是一个类的对象扩展yii\validators\Validator验证器,或一个模型类方法(称为内联验证器),以下签名

// $params refers to validation parameters given in the rule
function validatorName($attribute, $params)

在上面的属性指的是属性目前验证美元,美元参数包含一个验证器数组配置选项,如马克斯的字符串验证器。目前验证属性的值可以作为美元$ this - >访问属性。注意之前美元属性;这是将变量$属性的值和使用它作为访问的属性的名称

Yii还提供了一组内置验证器。每一个都有一个别名指定验证规则时可以使用。

以下是一些例子:

[
// built-in "required" validator
[['username', 'password'], 'required'],
// built-in "string" validator customized with "min" and "max" properties
['username', 'string', 'min' => 3, 'max' => 12],
// built-in "compare" validator that is used in "register" scenario only
['password', 'compare', 'compareAttribute' => 'password2', 'on' => 'register'],
// an inline validator defined via the "authenticate()" method in the model class
['password', 'authenticate', 'on' => 'login'],
// a validator of class "DateRangeValidator"
['dateRange', 'DateRangeValidator'],
];

请注意,为了继承父类中定义的规则,一个子类需要父母与孩子规则合并使用
array_merge()
.

参见 scenarios().

public array rules ( )
returnarray验证规则
safeAttributes() public 方法

返回属性名称,是安全的大规模分配在当前场景。

public string[] safeAttributes ( )
returnstring[]安全属性名称
scenarios() public 方法

返回一个列表的场景和相应的活动属性

一个活跃的属性是当前场景中验证。返回的数组应该在以下格式:

[
'scenario1' => ['attribute11', 'attribute12', ...],
'scenario2' => ['attribute21', 'attribute22', ...],
...
]

默认情况下,一个活跃的属性被认为是安全的,可以大规模分配。如果属性不应该大规模分配(因此被认为是不安全的),请与一个感叹字符前缀的属性(例如!排名)

该方法的默认实现将返回所有场景中发现的rules().声明。一个特殊场景叫SCENARIO_DEFAULT将包含所有属性中发现的rules().。每个场景将与属性相关的验证的验证规则,适用于场景。

public array scenarios ( )
returnarray一个场景和相应的积极的属性列表。
setAttributes() public 方法

设置属性值在一个巨大的方式。

参见:

safeAttributes()

attributes()

public void setAttributes ( $values, $safeOnly = true )
$valuesarray属性值(名称= >值)被分配到模型中。
$safeOnlyboolean作业是否应该只做安全属性。安全属性是与一个验证规则在当前\yii\base\scenario.
setScenario() public 方法

集的场景模型

注意,这个方法不检查是否存在的场景。validate()方法会执行此检查。

public void setScenario ( $value )
$valuestring这个模型的场景.
validate() public 方法

执行数据验证.

这个方法执行验证规则适用于当前\yii\base\scenario.。以下标准用来确定目前适用的规则:

规则必须与属性相关的关联到当前场景;

当前场景的规则必须是有效的.

这个方法将调用beforeValidate()和afterValidate()之前和之后的实际验证,分别。如果beforeValidate()返回false,验证将会被取消及afterValidate()将不会被调用

错误可以通过检索验证中发现getErrors(),getFirstErrors()和getFirstError()。

public boolean validate ( $attributeNames = null, $clearErrors = true )
$attributeNamesarray应验证的属性名称列表。如果该参数为空,这意味着任何属性中列出适用的验证规则应该验证。
$clearErrorsboolean是否调用clearErrors()之前执行验证
returnboolean验证是否成功没有任何错误。
throwsyii\base\InvalidParamException如果当前场景是未知的.
validateMultiple() public static 方法

验证多个模型.

该方法将验证每一个模型。正在验证的模型可能是相同的或不同的类型。

public static boolean validateMultiple ( $models, $attributeNames = null )
$modelsarrayThe models to be validated
$attributeNamesarray应验证的属性名称列表。如果该参数为空,这意味着任何属性中列出适用的验证规则应该验证。
returnboolean是否所有的模型是有效的。错误将返回如果一个或多个模型验证错误。

事件详情

EVENT_AFTER_VALIDATE yii\base\Event类型的事件

事件引发的 validate()

EVENT_BEFORE_VALIDATE yyii\base\ModelEvent基础类型的事件

事件开始时提出的validate().。你可以设置yii\base\ModelEvent::$isValid是假停止验证。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: