在cakephp中验证与其他行的行

时间:2012-02-14 00:46:30

标签: validation cakephp

验证行与cakephp中的其他行 我需要验证“日期范围”以保存其他“日期范围”值。 像这样:

function dateNotColision($check) {

                foreach($this->data[$this->name] as $row){
                    if(($row['date_start']>=$date_start && $date_start<=$row['date_end']) ||
                       ($row['date_start']>=$date_end && $date_end<=$row['date_end']) ){
                        return false;
                    }
                }

        return true;
    }

我怎么样?

2 个答案:

答案 0 :(得分:0)

public function customDateValidation($field) {
    return ($this->data[$this->alias]['date_start'] >= $date_start && $this->data[$this->alias]['date_end'] <= $date_start) || ($this->data[$this->alias]['date_start'] >= $date_end && $this->data[$this->alias]['date_end'] <= $date_end)
}
验证数组中的

只需设置类似

的内容
'start_date' => array(
    'rule' => 'customDateValidation',
    'message' => 'wrong dates'
)

答案 1 :(得分:0)

最后我这样做了:

在模特:

 public $validate = array(
                         'date_start' =>array('rule'=>'dateNotColision',
                                              'message' => 'Date Colision'
                                              ),
                          'date_end' =>array('rule'=>'dateNotColision',
                                            'message' => 'Date Colision'
                                             )
                   );

  var $dataArray=array();

  public function setDataArray($array){
       $this->dataArray=$array;
  }  

  function dateNotColision($check) {

                foreach($this->dataArray as $row){
                    if(($row['date_start']>=$check && $check<=$row['date_end'])){
                        return false;
                    }
                }

        return true;
    }

在控制器中:

 $this->Hotel->Season->setDataArray($this->request->data['Season']);
 foreach($this->request->data['Season'] as $reviewData){
         $this->Hotel->Season->saveAssociated($reviewData);                             
 }