接上一篇 基于yii2的blog系统开发3:

第十步 文章更新时间和创建时间系统自动填写

backend/views/post/_form.php 里注释

<!--?= $form->field($model, 'create_time')->textInput() ?-->

<!--?= $form->field($model, 'update_time')->textInput() ?-->

方法一(不推荐)

修改backend/controllers/PostController.php的actionUpdate方法:
$model->update_time=time();

方法二.修改common/models/Post.php,重写beforeSave方法:

  /**
     * 实现模型自动添加create_time、update_time 的自动补全
     * @param bool $insert
     * @return bool
     */
    public function beforeSave( $insert )
    {
        if (parent::beforeSave($insert)) {
            if ($this->isNewRecord) //等价于if($insert)
            {
                $this->create_time = time();
                $this->update_time = $this->create_time;

            } else {
                $this->update_time = time();
            }
            return true;
        } else {
            return false;
        }
    }

方法三(推荐):common/models/Post.php里面添加如下代码,但是默认只对数据表字段定义为create_at和update_at有效

use yii\behaviors\TimestampBehavior;
 /**
     * {@inheritdoc}
     */
    public function behaviors()
    {
        return [
            TimestampBehavior::className(),
        ];
    }

也可以自定义:

<?php
use yii\behaviors\TimestampBehavior;

public function behaviors()
    {
        return [
            [
            'class' => TimestampBehavior::className(),
            'createdAtAttribute' => 'create_time',// 自己根据数据库字段修改
            'updatedAtAttribute' => 'update_time', // 自己根据数据库字段修改
           // 'value' => function(){return time();},
            ],
        ];
    }
?>

ps:注意去掉rules里对应的required规则

  public function rules()
    {
        return [
            [['uid', 'create_time', 'update_time'], 'required'],
              ];
    }