Это мой код в правилах модели …
………………………………………….. ………………………………………….. …………………….
array('dataMedicao', 'type', 'type' => 'date', 'message' => '{attribute}: is not a date!', 'dateFormat' => 'yyyy-MM-dd'),
array('dataMedicao', 'default',
'value' => new CDbExpression('NOW()'), //automatically add the current date in mysql feild
'setOnEmpty' => true, 'on' => 'update'),
array('date_created,date_modified', 'default',
'value' => new CDbExpression('NOW()'),
'setOnEmpty' => false, 'on' => 'insert'),
……………………………………………………………………………………………………………..
protected function beforeSave() {
$this->dataMedicao = new CDbExpression('NOW()');
return parent::beforeSave();
}
protected function afterFind() {
$this->dataMedicao = date('Y-m-d', strtotime($this->dataMedicao));
return TRUE;
}
……………………………………………………………………………………………………………
Это мой код в форме …
<?php echo $form->labelEx($model, 'dataMedicao'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'name' => 'dataMedicao',
'attribute' => 'dataMedicao',
'value' => $model->dataMedicao,
// additional javascript options for the date picker plugin
'options' => array(
'showAnim' => 'fold',
'dateFormat' => 'yy-mm-dd',
),
'htmlOptions' => array(
'style' => 'height:20px;'
),
));
?>
<?php echo $form->error($model, 'dataMedicao'); ?>
……………………………………………………………………………………………………………
В моей БД даты установлены на 0000-00-00, и когда я перечисляю их, они устанавливаются на 1970-01-01 … Затем при обновлении я использую DatePicker, чтобы установить дату для обновления поля, но он всегда получает обновление к текущей дате, на которой мы находимся … Как мне получить дату, которую я установил в DatePicker, и как мне сохранить ее в моей БД ?!
Спасибо за помощь
Ваш beforeSave
гарантирует, что $this->dataMedicao
всегда установлен на NOW()
всякий раз, когда запись обновляется. Удалите эту строку или оберните ее в таком состоянии, чтобы это происходило только при вставке.
protected function beforeSave() {
if ($this->isNewRecord)
$this->dataMedicao = new CDbExpression('NOW()');
return parent::beforeSave();
}
Это также может быть сделано путем редактирования вашего rules
,
Также ваш код выбора даты должен ссылаться на $model
следующее:
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'dataMedicao',
...
Без этого dataMedicao
не может быть установлен во время массового назначения, так как name
размещенной переменной dataMedicao
и не <Model>[dataMedicao]
,
Других решений пока нет …