我正在使用Cakephp 3.x,我有一个表单,其中一个字段是日期的。 在后端,我正在使用MySQL。
我在 MySQL 中的字段结构dob
类型为 date
。
现在在 CakePHP 3.x 中,我使用以下语法来创建输入。
echo $this->Form->input('dob', array(
'label' => (__('Date of Birth')),
'type' => 'text',
'required' => false,
'class' => 'form-control date'
));
我使用过引导日期时间选择器,例如,
$('.date').datetimepicker({
format: 'YYYY-MM-DD'
});
现在,当我提交表单并print_r
当时的请求数据时,我得到了这样的字段
[
....
'dob' => '2016-02-11',
....
]
但是当我保存记录并在数据库中查找时,它会向我显示随机日期,例如2036-10-25
谁能帮我?
这是
最终的一般解决方案,
//File : src/Model/Table/PatientsTable.php
namespace AppModelTable;
use CakeORMTable;
use CakeEventEvent;
use ArrayObject;
use CakeI18nTime;
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');
}
}
}
您将 dob 类型声明为日期,但尝试以字符串格式而不是日期时间格式保存日期。试试这个
use CakeI18nTime;
$this->request->data['dob']= Time::parseDate($this->request->data['dob'],'Y-M-d');