接上一篇 基于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'],
];
}