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