Валидационный ряд с другими строками в cakephp - PullRequest
0 голосов
/ 14 февраля 2012

Проверка строки с другими строками в 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 голосов
/ 15 февраля 2012

Наконец я сделал это:

В модели:

 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);                             
 }
0 голосов
/ 14 февраля 2012
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'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...