CJuiDatePicker Всегда сохраняет текущий день в базе данных

Это мой код в правилах модели …
………………………………………….. ………………………………………….. …………………….

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, и как мне сохранить ее в моей БД ?!
Спасибо за помощь

0

Решение

Ваш 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],

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector