Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP有许多验证—至少一个_Cakephp_Database Relations - Fatal编程技术网

CakePHP有许多验证—至少一个

CakePHP有许多验证—至少一个,cakephp,database-relations,Cakephp,Database Relations,我与Project有很多照片和Photo.image最简单的验证(需要附加)规则这样的关系 但当我用一个添加的文件添加项目是可以的,但当我创建了许多输入类型的文件,并且部分使用附加文件,部分不使用附加文件时,我的规则就不起作用了 …因为我需要至少一个文件,如何解决此问题 项目有许多照片,至少需要一张…应将其视为应用程序级逻辑,而不是模型验证 强制用户从控制器上载至少一张照片 假设您有多个上载字段 看法 控制器 实际上,它应该是模型验证,因为您正在尝试在两者之间创建一个“项目具有一到M个照片”的关

我与Project有很多照片和Photo.image最简单的验证(需要附加)规则这样的关系

但当我用一个添加的文件添加项目是可以的,但当我创建了许多输入类型的文件,并且部分使用附加文件,部分不使用附加文件时,我的规则就不起作用了

…因为我需要至少一个文件,如何解决此问题


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

应将其视为应用程序级逻辑,而不是模型验证

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

假设您有多个上载字段

看法 控制器
实际上,它应该是模型验证,因为您正在尝试在两者之间创建一个“项目具有一到M个照片”的关系。因此,应在项目模型的beforeValidate功能上执行此验证:

项目模型

function beforeValidate(){
    if( !isset($this->data['Photo']) || count($this->data['Photo']) == 0)
        return false;
    else
        return true;
}
其余的将由CakePHP的验证规则正确处理

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