Forms 模型验证在Cakephp 1.3中不适用于日期字段

Forms 模型验证在Cakephp 1.3中不适用于日期字段,forms,validation,date,cakephp,cakephp-1.3,Forms,Validation,Date,Cakephp,Cakephp 1.3,我正在尝试确保在表单的日期字段中输入日期 模型验证在除日期之外的所有字段上都正常工作 以下是我的模型验证示例: var $validate = array( 'title' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Title required', )

我正在尝试确保在表单的日期字段中输入日期

模型验证在除日期之外的所有字段上都正常工作

以下是我的模型验证示例:

var $validate = array(
    'title' => array(
        'notempty' => array(
            'rule' => array('notempty'),
            'message' => 'Title required',          
        )
    ),
    'date' => array(
        'notempty' => array(
            'rule' => array('notempty'),
            'message' => 'Date required',           
        )
    ),
);
当提交时字段为空时,“标题”将正确验证并闪烁错误

但是,该日期允许我保存一个空日期。。。以下是表单输入:

echo $this->Form->input('date', array('type'=>'text', 'label'=>'Start Time', 'class'=>'datetimepicker google'));
echo $this->Form->input('end_date', array('type'=>'text', 'label'=>'End Time', 'class'=>'datetimepicker google'));

我尝试更改验证规则来检查日期,甚至检查字母数字字符,但它一直让我保存空日期,所以我真的不确定我忽略了什么。

好的,我发现了问题所在

我有一行代码将字符串格式化为日期。默认情况下,它将格式化并将空字符串转换为默认日期12/31/1969,这就是验证传递空值的原因

现在我有它设置为只有转换为日期格式,如果一个值存在。。。比如说:

if ($this->data['Event']['date']) {
    $this->data['Event']['date'] = date("Y-m-d H:i:s", strtotime($this->data['Event']['date']));
}

你能试试这个'date'=>array'rule'=>'date','message'=>'输入有效日期','allowEmpty'=>false吗?我试过上面的代码,现在验证失败了,即使字段中有日期。我正在查看post请求,其中有一个日期字符串数据[事件][日期]:2014-04-22 12:00 am。请从控制器添加相关代码。另外,您是否尝试过required=>true?