忽然之间的博客

Thoughts, stories and ideas.

Yii2使用模型(Models)

Model类的代码结构

Yii2中的模型使用

模型使用注意事项(坑)

首先介绍下模型的类结构

模型类的位置为vendor/yiisoft/yii2/base/Model.php,Model类的定义

namesapce yii\base

class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayable
{
    use ArrayableTrait;
}

Model继承了组件类(Component),实现了构造函数,init()方法, 事件(events),行为(behaviors),类属性等特性。 实现了接口IteratorAggregate、ArrayAccess接口.对象实现数组访问和迭代调用

$model = new \app\models\ContactForm;

// 像访问数组单元项一样访问属性
$model['name'] = 'example';
echo $model['name'];

// 迭代器遍历模型
foreach ($model as $name => $value) {
    echo "$name: $value\n";
}

Model类的具体实现有数据模型(ActiveRecord类,框架提供),也可以扩展yii\base\Model,自己构建一个表单类,比如

namespace app\models;

use yii\base\Model;

class ContactForm extends Model
{
    public $name;
    public $email;
    public $subject;
    public $body;
}

模型使用流程

  • 定义Model类
  • 定义验证规则
  • 控制器调用

$model = new LoginForm(); if ($model->load(Yii::$app->request->post()) && $model->login()) { return $this->goBack(); }

验证规则注意事项