我有一个带有两个日期字段的表单,这些字段定义了一个时间段,以开始日期和结束日期为特征,而不是强制用户键入日期,我使用javascript日期选择器来表示这些日期,我通过回调对每个字段都有验证规则,如下所示:
$this->form_validation->set_rules('fechainicio', 'Fecha de Inicio', 'required|callback_startDate_valid');
$this->form_validation->set_rules('fechafin', 'Fecha de Fin', 'required|callback_endDate_valid');
规则工作好,个别,没问题!但由于这些字段定义了(天)时间段,我需要开始日期早于结束日期,这将是我的第3个验证规则,但是,如果日期字段是分开的,我该怎么做?如果我使用post值,它们只有在选择了日期后才知道,这会导致初始错误(未知数组索引),因为当您加载表单时,字段为空,任何想法? thanx i.a。
答案 0 :(得分:2)
你可以在endDate函数中获取开始日期的值。
function endDate_valid($endDate)
{
$startDate = $this->input->post('fechainicio');
if($startDate > $endDate){
$this->form_validation->set_message('endDate_valid','End Date must be greater than start date');
return FALSE;
}
return TRUE;
}
答案 1 :(得分:0)
我通过测试日期到达日期之前解决了这个问题:
if (isset($_POST['save'])){
$post_data = array();
if( $this->input->post() ){
$post_data = $this->input->post();
if( $post_data['fechainicio'] < $post_data['fechafin'] ){
$data['fechaUno'] = $post_data['fechainicio'];
$data['fechaDos'] = $post_data['fechafin'];
}else{
echo "There´s an error in dates order.";
}
}
}
虽然我在isset($_POST['save'])
和if( $this->input->post() )
条件中看到了一些冗余,但无论如何它都有效,我只是尝试了@ jagad89提示并且效果很好!,而不是!!