我正在尝试创建一个包含多个字段的表单,某些字段将由用户填充,其他字段将按定义转储到数据库中。
我真的不知道如何在语法方面使用它。
要更通用,例如我有Post tble,其中包含以下文件
id' => 'ID',
'post_head' => 'Heading',
'post_desc' => 'Description',
'post_tags' => 'Tags',
'created_time' => 'Created Time',
'created_date' => 'Created Date',
'post_image' => 'Upload Image',
'post_status' => 'Status',
'user_id' => 'User',
'category_id' => 'Category',
);
现在我想仅在以下字段中从用户那里获取输入:
Heading
Description
Tags
上传图片
现在我想知道我怎么能
答案 0 :(得分:1)
在你的模特中:
function beforeSave() {
if($this->getIsNewRecord()) {
$this->created_date = new CDbExpression('NOW()');
$this->created_time = new CDbExpression('NOW()');
}
$this->user_id = Yii::app()->user->id;
return parent::beforeSave();
}
答案 1 :(得分:1)
1)如果您使用像MySQL这样的数据库,则不需要created_date
和created_time
,只需datetime
字段(可能created_time
就是这样),这将是存储两个数据!
public function behaviors()
{
return array(
'CTimestampBehavior' => array(
'class' => 'zii.behaviors.CTimestampBehavior',
'updateAttribute' => false,
'createAttribute' => 'created_time',
)
);
}
然后两个人:
function beforeSave() {
if (!parent::beforeSave) {
return false;
}
$this->user_id = Yii::app()->user->id; // it should be this one, but it depends on how you implemented logging!
return true;
}
答案 2 :(得分:0)
而不是
'created_time' => 'Created Time',
'created_date' => 'Created Date',
您的数据库中只需要一个字段:
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
许多php函数都使用时间戳,它很容易使用它。你可以阅读here。
因此,如果您插入NULL create_time
,mysql将插入默认值DEFAULT CURRENT_TIMESTAMP
- 当前时间。
正如@Veseliq和@mashingan所说,你需要添加
function beforeSave() {
$this->user_id = Yii::app()->user->id;
return parent::beforeSave();
}
或尝试在表单视图中添加:
echo $form->hiddenField($model, 'user_id', array('value'=>Yii::app()->user->id));
如果不起作用,请告诉我们var_dump(Yii::app()->user->id);