0

我有像 Project hasMany Photos 和 Photo.image 的最简单验证(需要附加)规则之类的关系。

但是当我添加带有一个添加文件的项目时是可以的,但是当我创建许多输入类型文件,并且部分包含附件和部分没有时,那么我的规则不起作用。

...因为我希望至少需要一个文件,如何解决这个问题?

项目有许多照片,至少需要一张...

4

2 回答 2

2

实际上,它应该是模型验证,因为您要做的是在两者之间创建“项目具有一对 M 照片”关系。所以这个验证应该在 Project 模型的 beforeValidate 函数上完成:

项目模型

function beforeValidate(){
    if( !isset($this->data['Photo']) || count($this->data['Photo']) == 0)
        return false;
    else
        return true;
}

其余的将由 CakePHP 的验证规则正确处理。

于 2012-09-29T19:08:53.163 回答
0

它应该被视为应用程序级逻辑而不是模型验证。

强制用户从控制器上传至少一张照片。

假设您有多个上传字段

看法

echo $form->input("Photo.0.file", $options);
echo $form->input("Photo.1.file", $options);
echo $form->input("Photo.2.file", $options);

控制器

    //form submited
    if (!empty($this->data)) {

        $total_uploaded = 0;

        foreach ($this->data['Photo'] as $i => $record) {

            if (empty($record['file'])) { //some field leave blank
                unset($this->data['Photo'][$i]);
                //continue;
            }else{
                $total_uploaded ++;
            }
        }

        //check at lease 1 file
        if($total_uploaded > 0){
            //validate and saveAll()
        }
    }
于 2012-03-31T10:51:36.463 回答