大家好,这可能听起来很傻,但我不明白解决这种情况的最佳方法是什么:
我有一个模型POST,它与另一个名为FILE的模型相关联。一个帖子有很多文件,一个文件属于一个帖子。问题是,我想在创建的那一刻有效,每个POST包含至少一个文件。
到目前为止,我在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尚未保存的新记录时起作用。我希望这对你有帮助。