CakePHP 2.x:验证模型至少包含其中一个关联

时间:2014-03-25 18:53:54

标签: php validation cakephp cakephp-2.0

大家好,这可能听起来很傻但我不明白解决这个问题的最佳方法是什么:

我有一个模型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 个答案:

答案 0 :(得分:1)

如果文件已发送,则存在金额为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的新记录时,这将起作用。我希望这会有所帮助。

相关问题