我想在表单中使用日期选择器,但在提交后,该值在数据库中存储为 000-00-00 ,并在提交表单后查看详细信息 minDate 显示值。
同一日期选择器在其他形式下工作正常, 我正在尝试重新使用日期选择器
file.js
function userDetailsEventHandlers() {
$('.date-picker').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-MM-yy',
yearRange: '1900:1998',
minDate: '01-January-1900',
maxDate: '31-December-1998',
});
}
form.php的
<div class="form-group">
<?php echo $form->labelEx($model,'DOB'); ?>
<?php echo $form->textField($model,'DOB', array('class' => 'form-control date-picker')); ?>
<?php echo $form->error($model,'DOB'); ?>
</div>
模特课程:
protected function afterFind() {
if (!empty($this->DOB)) {
$this->DOB = date('d-F-Y', strtotime($this->DOB));
}
return parent::afterFind();
}
数据库中的数据类型:datetime(我也尝试过日期)。 使用datepicker的其他形式的数据类型是datetime。
答案 0 :(得分:0)
$('.date-picker').datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-MM-yyyy', <------------ Make this changes
yearRange: '1900:1998',
minDate: '01-01-1900', <------------ Make this changes
maxDate: '31-12-1998',
});
}
当您将dateformat指定为'dd-MM-yy'时,需要以相同的格式传输minDate和maxDate。
还要确保在服务器端传递哪种格式。如果它不是yyyy-MM-dd
,则需要使用STR_TO_DATE()
手动将该字符串内容转换为日期。
试试上面的代码。
希望这会有所帮助。
答案 1 :(得分:0)
我认为问题在于日期格式,因为您的日期选择器使用日期格式:
'01-January-1900'
// which is different then 'Y-m-d'
但是日期列的默认格式为'Y-m-d'
,如果您的数据格式不正确,则会插入000-00-00
。因此,请将日期更改为'Y-m-d'
,然后重试。
答案 2 :(得分:0)
最后使用了CJuiDatePicker,:P
<div class="form-group">
<?php echo $form->labelEx($model,'DOB'); ?>
<?php
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
'model' => $model,
'attribute' => 'DOB',
'language'=> 'en',
'name'=>'datepicker-month-year-menu',
//'flat'=>true,//remove to hide
'options'=>array(
'dateFormat' => 'yy-mm-dd',
'showAnim'=>'slide',//'slide','fold','slideDown','fadeIn','blind','bounce','clip','drop'
'changeMonth'=>true,
'changeYear'=>true,
'yearRange'=>'1900:1998',
// 'minDate' => '2000-01-01', // minimum date
// 'maxDate' => '2099-12-31', // maximum date
),
'htmlOptions'=>array(
'class' => 'form-control',
'style'=>''
),
));
?>
</div>