使用bootstrap datetimepicker在cakephp 3.x中正确保存DateTime

我正在使用cakephp 3.x,我有一个表单,其中一个字段是日期.在后端我使用的是
mysql.

我在mysql中的字段结构是类型为date的dob.

现在在cakephp 3.x我使用下面的语法来创建输入.

echo $this->Form->input('dob', array(
    'label' => (__('Date of Birth')),
    'type' => 'text',
    'required' => false,
    'class' => 'form-control date'
));

我曾经使用过bootstrap datetimepicker,

$('.date').datetimepicker({
    format: 'YYYY-MM-DD'
});

现在,当我提交表格时,我打印了当时的请求数据,我得到了这样的字段

[
....
'dob' => '2016-02-11',
....
]

但是当我保存记录并查看数据库时,它会显示我的随机日期,如2036-10-25

有人可以帮我吗?

最佳答案 这是最终的通用解决方案,

//File : src/Model/Table/PatientsTable.php
namespace App\Model\Table;

use Cake\ORM\Table;
use Cake\Event\Event;
use ArrayObject;
use Cake\I18n\Time;

class PatientsTable extends Table
{
    ...
    ...
    public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $options)
    {
        if (isset($data['dob'])) {
            $data['dob'] = Time::parseDate($data['dob'], 'Y-M-d');
        }
    }
}
点赞