Class yii\base\Model

类yii \ \模型基础

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

继承yii\base\Model » yii\base\Component » yii\base\Object
实现ArrayAccessIteratorAggregateyii\base\Arrayable
Uses Traitsyii\base\ArrayableTrait
可用自版本2.0

模型是数据模型的基类。

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

  • 属性声明:默认情况下,每一个公共类成员被认为是一个模型属性
  • 属性标签:每个属性可能与一个标签显示的目的
  • 大规模属性赋值
  • 基于场景的验证

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

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

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

 

公共方法

隐藏继承方法

方法描述定义在
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 ( )
returnarray

Attribute hints (name => hint)

attributeLabels() public 方法

返回属性标签。

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

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

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

参见 generateAttributeLabel().

public array attributeLabels ( )
returnarray

Attribute labels (name => label)

attributes() public 方法

返回属性名称的列表。

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

public array attributes ( )
returnarray

List 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]”。如果表单名称是一个空字符串,然后输入名称是“b”

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

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

参见 load().

public string 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 )
$attributestring

The attribute name

returnstring

The attribute hint

getAttributeLabel() public 方法

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

参见:

public string getAttributeLabel ( $attribute )
$attributestring

属性名称

returnstring

属性标签

getAttributes() public 方法

Returns attribute values.

public array getAttributes ( $names = null, $except = [] )
$namesarray

需要返回的属性值列表。默认为零,这意味着所有属性中列出的attributes()将返回。如果它是一个数组,数组中只有属性将被归还

$exceptarray

不应该返回属性的值的列表。

returnarray

属性值(名称= >值)。

getErrors() public 方法

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

参见:

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 方法

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

参见:

public string getFirstError ( $attribute )
$attributestring

属性名称.

returnstring

错误消息。如果没有错误返回Null.

getFirstErrors() public 方法

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

参见:

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 方法

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

参见:

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 )
$modelsarray

The models to be validated

$attributeNamesarray

应验证的属性名称列表。如果该参数为空,这意味着任何属性中列出适用的验证规则应该验证。

returnboolean

是否所有的模型是有效的。错误将返回如果一个或多个模型验证错误。

事件详情

EVENT_AFTER_VALIDATE yii\base\Event类型的事件

事件引发的 validate()

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

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

 

转载于:https://my.oschina.net/u/2552765/blog/854332

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值