CakePHP:将日期验证为' dmy'但保存为MySQL为正确的日期

时间:2015-07-24 15:00:48

标签: php mysql validation date cakephp

我有一个CakePHP 2.7应用程序。在我的模型中,我有以下验证:

public $validate = [
    'trip_start' => [
        'rule' => ['date', 'dmy'],
        'message' => 'Date format is DD/MM/AAAA'
    ];

此工作适用于客户端验证,我可以验证用户是否正确选择日期。

但是为了保存到MySQL,预期的格式是YYYY-mm-dd。什么是"标准"这个解决方案?修改beforeSave?问题是需要有2种不同的验证。一种格式我期望用户输入日期(即使使用日期选择器),另一种格式是MySQL期望的格式。

1 个答案:

答案 0 :(得分:2)

CakeTime类是为它而制作的。

App::uses('CakeTime', 'Utility');
echo CakeTime::format('2015-07-24', '%d-%m-%Y');

返回24-07-2015

在您的情况下,您只需在验证后重新格式化数据:

public function afterValidate(){
$this->request->data['Model']['fieldName'] = CakeTime::format($this->request->data['Model']['fieldName'], '%Y-%m-%d');
}