我有一个CakePHP 2.7应用程序。在我的模型中,我有以下验证:
public $validate = [
'trip_start' => [
'rule' => ['date', 'dmy'],
'message' => 'Date format is DD/MM/AAAA'
];这对于客户端验证很好,我可以验证用户选择的日期是否正确。
但是为了保存到MySQL,预期的格式是YYYY。这个问题的“标准”解决方案是什么?修改beforeSave?问题是,需要有两个不同的验证。一种是我期望用户输入日期的格式(即使使用数据交换),另一种是MySQL所期望的格式。
发布于 2015-07-24 15:23:56
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');
}https://stackoverflow.com/questions/31613823
复制相似问题