在codeigniter中验证日期时间流逝的规则?

时间:2015-06-16 18:23:04

标签: php codeigniter date

我有一个带有两个日期字段的表单,这些字段定义了一个时间段,以开始日期和结束日期为特征,而不是强制用户键入日期,我使用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。

2 个答案:

答案 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提示并且效果很好!,而不是!!