添加日期时间规则以在codeigniter中建模

时间:2013-12-09 17:39:35

标签: php codeigniter datetime

在我的CodeIgniter模型中,其中一个字段是租赁开始和租赁端,用于设置属性租约的范围。我目前有类似下面的内容。什么是在日期时间设置规则的语法?或者只是约会的日期。

public $rules = array(
  'unitnum' => array(
    'field' => 'unitnum',
    'label' => 'UnitNum',
    'rules' => 'trim|required|numeric|xss_clean'
  ),
  'rent' => array(
    'field' => 'rent',
    'label' => 'Rent',
    'rules' => 'trim|required|numeric|greater_than[0]|xss_clean'
  ),
  'leasestart' => array(
    'field' => 'leasestart',
    'label' => 'LeaseStart',
    'rules' => 'trim|required|????|xss_clean'
  ),
  'leaseend' => array(
    'field' => 'leaseend',
    'label' => 'LeaseEnd',
    'rules' => 'trim|required|????|xss_clean'
  ),

);

1 个答案:

答案 0 :(得分:0)

不幸的是,codeigniter没有日期时间规则。你必须使用回调。

编辑:此外,您还需要在租约结束或租约开始时指定回调,因为它会以任一方式检查这两个值。

public $rules = array(
 'unitnum' => array(
    'field' => 'unitnum',
    'label' => 'UnitNum',
    'rules' => 'trim|required|numeric|xss_clean'
  ),
  'rent' => array(
    'field' => 'rent',
    'label' => 'Rent',
    'rules' => 'trim|required|numeric|greater_than[0]|xss_clean'
  ),
  'leasestart' => array(
    'field' => 'leasestart',
    'label' => 'LeaseStart',
    'rules' => 'trim|required|callback__check_lease|xss_clean'
  ),
  'leaseend' => array(
    'field' => 'leaseend',
    'label' => 'LeaseEnd',
    'rules' => 'trim|required|xss_clean'
  ),

);

您的功能可能如下所示,但请记住您的日期格式,以便您可以使用strtotime()

function _check_lease($lease_start){
    $lease_start = strtotime($lease_start);
    $lease_end = strtotime($this->input->post('leasestart'));

    if($lease_start > $lease_end){
        $this->form_validation->set_message('_check_lease', 'Invalid range, lease time cannot be greater than lease end.');
        return false;
    }
    return true;
}