Yii app如何在创建视图中为日期当前日期创建隐藏字段?

时间:2014-03-30 18:21:37

标签: php yii

我为广告创建了模型视图和控制器。 我想在添加表中的日期作为当前日期。 在由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 -->

5 个答案:

答案 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>