2014-03-25 52 views
0

大家好,這可能聽起來很傻,但我不明白什麼是最好的方法來解決這種情況:CakePHP的2.X:驗證模型包含其關聯的至少一個

我有一個模型POST它與另一個名爲FILE的模型相關聯。帖子有許多文件和文件屬於帖子。事情是我想在創建時每個POST至少包含一個FILE有效。

到目前爲止,我在POST的beforeSave方法試過這樣:

public function beforeSave($options = array()) { 
     if (isset($this->data[$this->alias]['File'])) { 
      if (count($this->data[$this->alias]['File']) == 0) { 
       $this->invalidate('File', "Postmust include at least one file.", false); 
       return false; 
      } 
     } 
     return true; 
    } 

遺憾的是它不工作。任何幫助表示讚賞。謝謝。

回答

1

如果文件被髮送,然後存在一個或多個金額,如果文件沒有發送,那麼它可能會在您的條件返回false。

我建議這樣的事情:

public function beforeSave($options = array()) { 
    if (empty($this->data[$this->alias]['id'])) { 
       if (count($this->data[$this->alias]['File']) == 0) { 
        $this->invalidate('File', "Postmust include at least one file.", false); 
        return false; 
       } 
      } 
     return parent::beforeSave($options); 
    } 

當您創建其中id尚未保存的新記錄這將工作。我希望這將有所幫助。