Приложение 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 --> 

Вы можете сделать это в своем контроллере. Например, в yuor Controller` create action

  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> 

Вместо

 <?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 .

Используйте просто:

 date('Ymd H:i:s') 

Вы можете просто CURRENT_TIMESTAMP в своей базе данных, но, к сожалению, он работает только в 1 строке таблицы

Я думаю, что лучше назначить значение для модели. вы можете использовать beforeSave () для назначения значения в «createtime» до сохранения модели.

на # protected / models / YourModel.php добавить метод следующим образом:

 public function beforeSave(){ if($this->isNewRecord){ $this->createtime = date('Ymd H:i:s'); }else{ $this->modifiedtime = date('Ymd 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>