2012-02-14 3 views
0

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; 
    } 

나는 어떻게 할 수 있습니까? 당신의 유효성을 배열의

답변

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' 
) 
+0

이 유효성 검사는 동일한 행에 있지만 다른 행에는 적용되지 않습니다. – jonathan

0

같은 단지 설정 뭔가 내가 한이 : 모델에서

:

$this->Hotel->Season->setDataArray($this->request->data['Season']); 
foreach($this->request->data['Season'] as $reviewData){ 
     $this->Hotel->Season->saveAssociated($reviewData);        
} 
: 컨트롤러에서

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; 
    } 

관련 문제