CakePHP 3 编辑页FormHelper中数据库日期无法在日期选择器正常显示问题
问题根因
HTML原生date类型输入框仅支持YYYY-MM-DD格式的默认值赋值,你当前传递的是带时间、时区标识的完整ISO 8601格式字符串(例如2021-10-08T00:00:00+00:00),浏览器无法识别匹配该格式,因此不会回填显示。你之前用strtotime()转换无效大概率是没有后续将时间戳格式化为Y-m-d格式,就直接赋值给了输入框。
解决方案
CakePHP传递到视图的日期字段默认是DateTime对象,直接调用format方法格式化后再赋值给value即可,修改后的代码如下:
date_of_purchase字段:
<div class="col-sm-4"> <?= $this->Form->input('date_of_purchase', array( 'type' => 'date', 'required' => 'required', 'class' => 'form-control date', 'value' => $asset->date_of_purchase->format('Y-m-d') )) ?> </div>
date_of_entry字段:
<div class="col-sm-4"> <?= $this->Form->input('date_of_entry', array( 'type' => 'date', 'required' => 'required', 'class' => 'form-control date', 'value' => $asset->date_of_entry->format('Y-m-d') )) ?> </div>
如果版本限制无法直接调用DateTime的format方法,也可以用PHP原生函数转换格式:
'value' => date('Y-m-d', strtotime($asset->date_of_purchase))
内容的提问来源于stack exchange,提问作者Kovo_
相关产品推荐
相关产品推荐

