- 2
- 0
- 约1.01万字
- 约 10页
- 2017-06-18 发布于湖北
- 举报
模型 (Models)
模型
模型是 MVC 模式中的⼀部分, 是代表业务数据、规则和逻辑的对象。
可通过继承 yii\base\Model 或 的⼦类定义模型类,基类yii\base\Model⽀持许多实⽤
的特性:
属性: 代表可像普通类属性或数组⼀样被访问的业务数据;
属性标签: 指定属性显⽰出来的标签;
块赋值: ⽀持⼀步给许多属性赋值;
验证规则: 确保输⼊数据符合所申明的验证规则;
数据导出: 允许模型数据导出为⾃定义格式的数组。
Model 类也是更多⾼级模型如Active Record 活动记录的基类, 更多关于这些⾼级模
型的详情请参考相关⼿册。
补充:模型并不强制⼀定要继承yii\base\Model ,但是由于很多组件⽀持
yii\base\Model ,最好使⽤ 做为模型基类。
属性
模型通过 属性 来代表业务数据,每个属性像是模型的公有可访问属性,
yii\base\Model::attributes() 指定模型所拥有的属性。
可像访问⼀个对象属性⼀样访问模型的属性:
$model = new \app\models\ContactForm;
// name 是ContactForm模型的属性
$model-name = example;
echo $model-name;
也可像访问数组单元项⼀样访问属性,这要感谢yii\base\Model⽀持 ArrayAccess 数组
访问 和 ArrayIterator 数组迭代器:
$model = new \app\models\ContactForm;
// 像访问数组单元项⼀样访问属性
$model[name] = example;
echo $model[name];
// 迭代器遍历模型
foreach $model as $name = $value) {
echo $name: $value\n;
}
定义属性
默认情况下你的模型类直接从yii\base\Model继承,所有 non-static p ublic⾮静态公有 成
员变量都是属性。 例如,下述ContactForm模型类有四个属
性name, email, subject and body, ContactForm 模型⽤来代表从HTML表单获
取的输⼊数据。
namespace app\models;
use yii\base\Model;
class ContactForm extends Model
{
public $name;
public $email;
public $subject;
public $body;
}
另⼀种⽅式是可覆盖 yii\base\Model::attributes() 来定义属性,该⽅法返回模型的属性
名。 例如 yii\db\ActiveRecord 返回对应数据表列名作为 的属性名, 注意可能需要覆
盖魔术⽅法如__get ), __set )使属性像普通对象属性被访问。
属性标签
当属性显⽰或获取输⼊时,经常要显⽰属性相关标签,例如假定⼀个属性名
为firstName, 在某些地⽅如表单输⼊或错误信息处,你可能想显⽰对终端⽤户来
说更友好的 First Name 标签。
可以调⽤ yii\base\Model:: etAttributeLabel() 获取属性的标签,例如:
$model = new \app\models\ContactForm;
// 显示为 Name
echo $model-getAttributeLabel name);
默认情况下,属性标签通过yii\base\Model:: enerateAttributeLabel()⽅法⾃动从属性名
⽣成. 会⾃动将驼峰式⼤⼩写变量名转换为多个⾸字母⼤写的单词,例
如 username 转换为 Username, firstName 转换为 First Name。
如果你不想⽤⾃动⽣成的标签,可以覆盖 yii\base\Model::attributeLabels() ⽅法明确指
定属性标签,例如:
namespace app\models;
use yii\base\Model;
class ContactForm extends Model
{
public $name;
public $email;
原创力文档

文档评论(0)