验证行与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 :(得分: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);
}