我试图确保在表单的日期字段中输入日期。
模型验证在除日期之外的所有字段上都能正常工作。
以下是我的模型验证示例:
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'));
我尝试更改验证规则以检查日期甚至检查字母数字字符,但它一直让我保存空白日期,所以我真的不确定我是什么俯视。
答案 0 :(得分:0)
好的,我弄清楚出了什么问题......
我有一行代码将字符串格式化为日期。默认情况下,它会将字符串格式化并将其清空为 12/31/1969 的默认日期,这就是验证传递空值的原因。
现在我将它设置为仅在存在值时才转换为日期格式......所以像这样:
if ($this->data['Event']['date']) {
$this->data['Event']['date'] = date("Y-m-d H:i:s", strtotime($this->data['Event']['date']));
}