【发布时间】:2013-12-03 11:35:35
【问题描述】:
伙计们,重新散列similar question..
我正在使用 Cakephp 2.4.2 和 eternicode's jquery Bootstrap-Datepicker。
在add.ctp 视图中,日期字段的代码如下:
echo $this->Form->input('Model.issue_date', array(
'format' => array('before', 'label', 'between', 'input', 'error', 'after'),
'fieldset' => false,
'label' => false,
'before' => '<label class="col-sm-2 control-label">Issue Date</label><div class="col-sm-10">',
'after' => '</div>',
'class' => 'form-control datepicker',
'type' => 'text',
'div' => 'form-group',
'error' => array(
'attributes' => array(
'wrap' => 'div', 'class' => 'alert alert-danger'
)
)
)
);
产生:
<div class="form-group required">
<label class="col-sm-2 control-label">Issue Date</label>
<div class="col-sm-10">
<input name="data[Model][issue_date]" dateFormat="dmy" class="form-control datepicker" type="text" id="ModelIssueDate" required="required"/>
</div>
</div>
在我添加的视图文件底部:
<script type="text/javascript">
<!--
//-->
$(document).ready(function() {
$('.datepicker').datepicker({
format: "dd-mm-yyyy",
todayBtn: "linked",
orientation: "bottom right",
autoclose: true,
todayHighlight: true
});
});
</script>
我有两个问题:
提交表单后,如果出现验证错误,并且页面刷新(显示错误),输入字段中的日期格式恢复为
yyyy-mm-dd h:i:s格式(我正在添加一个日期到用于其他目的的日期时间字段,但即使我在 mysql 中更新该字段的日期格式,日期格式仍会在错误时恢复为yyyy-mm-dd)。然后,用户必须从日期选择器中重新选择日期以避免遇到(其他)错误。-
当我向 /Model/Model.php 文件中的字段添加日期时间验证时,我收到格式验证错误。这是我用来验证格式的代码(控制器和模型中用于测试 dmy、ymd、ddmmyyyy、yyyymmdd 格式的众多排列之一):
'issue_date'=> array( 'allowEmpty' => array( 'rule' => 'notEmpty', 'message' => 'Please enter a date and time' ), 'format' => array( 'rule' => array('datetime', 'dmy'), 'message' => 'Please enter a valid date' ) ),
当我删除日期格式验证时,表单发布正常,并且(正确的)日期时间被提交到数据库。
我还尝试在控制器中添加以下 strtotime,但未解决问题:
if (isset($this->request->data['Model']['issue_date'])) {
$this->request->data['Model']['issue_date'] = date('d-m-Y', strtotime($this->request->data['Model']['issue_date']));
}
我还研究过使用 DateBehavior provided in the bakery with no success - 它在视图中正确格式化日期,但问题 1 和 2 仍然存在。
任何建议,或者如果有人有在 cakephp 2.x 中使用带有 dd/mm/yyyy 格式日期字段的 datepicker 的工作示例。
【问题讨论】:
标签: jquery date cakephp twitter-bootstrap datepicker