[英]Daterangepicker date defaults to zero in CakePHP
我正在开发一个小的应用程序使用CakePHP,我需要保存一个startdate
和enddate
的事件。 我使用了Bootstrap Daterangepicker,以便用户直观地输入日期。
在我的add.ctp
视图中,我有两个字段:
<div class="form-group">
<?php echo $this->Form->input('start', array(
'class' => 'form-control',
'type' => 'text',
'id' => 'start',
'name' => 'start',
'data-mask')); ?>
</div><!-- .form-group -->
<div class="form-group">
<?php echo $this->Form->input('end', array(
'class' => 'form-control',
'type' => 'text',
'id' => 'end',
'name' => 'end',
'data-mask')); ?>
</div>
以及控制输入的Javascript:
<script type="text/javascript">
$(function() {
$('input[name="start"]').daterangepicker({
timePicker24Hour: true,
singleDatePicker: true,
timePicker: false,
timePickerIncrement: 30,
locale: {
format: 'YYYY-MM-DD HH:mm:ss'
}
});
$('input[name="end"]').daterangepicker({
timePicker24Hour: true,
singleDatePicker: true,
timePicker: false,
timePickerIncrement: 30,
locale: {
format: 'YYYY-MM-DD HH:mm:ss'
}
});
});
</script>
选择器工作正常,可以正确更新字段值,但是当我尝试保存表单时,开始字段将被写入数据库,如下所示:
开始注册00:00:00
结束(空)
如果我恢复到字段的默认配置,则开始字段和结束字段的表单数据将正确保存。
任何有关我失败之处的线索将不胜感激。
尝试这样的事情
$correctdate = date("Y-m-d j:h:m",strtotime($yourdate));
这不是一个很好的代码和平,但是它应该有助于朝正确的方向进一步发展。 我们将这个字符串作为时间戳记。 然后,将其更改为适当的日期时间值。
好的,所以我将文本传递到datetime字段,并且保存操作失败。 为了解决这个问题,我必须通过在模型的beforeSave()
函数中处理字符串,将字符串转换为正确的类型。
这是对我有用的代码:
public function beforeSave($options = array()) {
if (!empty($this->data['Task']['start']) && !empty($this->data['Task']['end'])) {
$this->data['Task']['start'] = $this->dateFormatBeforeSave($this->data['Task']['start']);
$this->data['Task']['end'] = $this->dateFormatBeforeSave($this->data['Task']['end']);
}
return true;
}
public function dateFormatBeforeSave($dateString) {
return date('Y-m-d h:m:s', strtotime($dateString));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.