我为广告创建了模型视图和控制器。 我想在添加表中的日期作为当前日期。 在由gii生成的视图中,它显示文本输入字段。 如何让它隐藏,以便它可以获得当前日期而不需要从用户输入? 我应该改变什么? 请帮帮我。这不是一个复杂但我感到困惑..谢谢
查看/ _form.php
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'add-form',
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model,'username',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'username'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'addname'); ?>
<?php echo $form->textField($model,'addname',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($model,'addname'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'category'); ?>
<?php echo $form->textField($model,'category',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($model,'category'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'description'); ?>
<?php echo $form->textField($model,'description',array('size'=>60,'maxlength'=>1000)); ?>
<?php echo $form->error($model,'description'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'city'); ?>
<?php echo $form->textField($model,'city',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'city'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'address'); ?>
<?php echo $form->textField($model,'address',array('size'=>60,'maxlength'=>500)); ?>
<?php echo $form->error($model,'address'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'mobile'); ?>
<?php echo $form->textField($model,'mobile',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($model,'mobile'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'email'); ?>
<?php echo $form->textField($model,'email',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($model,'email'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'image'); ?>
<?php echo $form->textField($model,'image',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($model,'image'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'price'); ?>
<?php echo $form->textField($model,'price',array('size'=>60,'maxlength'=>100)); ?>
<?php echo $form->error($model,'price'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'createtime'); ?>
<?php echo $form->textField($model,'createtime'); ?>
<?php echo $form->error($model,'createtime'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
答案 0 :(得分:1)
您可以在您的控制器中执行此操作。例如,在你的Controller`创建动作
中 public function actionCreate()
{
$model=new Product;
$model->createtime = strtotime('Now');
if(isset($_POST['Product']))
{........}
.......
}
从from.php中删除
<div class="row">
<?php echo $form->labelEx($model,'createtime'); ?>
<?php echo $form->textField($model,'createtime'); ?>
<?php echo $form->error($model,'createtime'); ?>
</div>
答案 1 :(得分:1)
而不是
<?php echo $form->textField($model,'createtime'); ?>
使用
<?php echo $form->hiddenField($model,'createtime'); ?>
或者在您的模型中,您可以在afterConstruct()
中设置默认值:
protected function afterConstruct() {
parent::afterConstruct();
if($this->hasAttribute('createtime') && empty($this->createtime))
$this->createtime = new Date();
另一种方法是将数据库中的默认值设置为CURRENT_TIMESTAMP
。
答案 2 :(得分:1)
简单地使用:
date('Y-m-d H:i:s')
答案 3 :(得分:0)
您可以在数据库中使用CURRENT_TIMESTAMP
,但不幸的是,它仅适用于表格中的1行
答案 4 :(得分:0)
我认为最好把赋值放在Model上。 您可以使用beforeSave()将值分配到&#39;创建时间&#39;在模型保存之前。
#p> on#protected / models / YourModel.php添加如下方法:public function beforeSave(){
if($this->isNewRecord){
$this->createtime = date('Y-m-d H:i:s');
}else{
$this->modifiedtime = date('Y-m-d H:i:s');
//just case if you have modifiedtime field
}
return parent::beforeSave();
}
之后,只需从视图表单中删除此代码。
<div class="row">
<?php echo $form->labelEx($model,'createtime'); ?>
<?php echo $form->textField($model,'createtime'); ?>
<?php echo $form->error($model,'createtime'); ?>
</div>