我有像 Project hasMany Photos 和 Photo.image 的最简单验证(需要附加)规则之类的关系。
但是当我添加带有一个添加文件的项目时是可以的,但是当我创建许多输入类型文件,并且部分包含附件和部分没有时,那么我的规则不起作用。
...因为我希望至少需要一个文件,如何解决这个问题?
项目有许多照片,至少需要一张...
我有像 Project hasMany Photos 和 Photo.image 的最简单验证(需要附加)规则之类的关系。
但是当我添加带有一个添加文件的项目时是可以的,但是当我创建许多输入类型文件,并且部分包含附件和部分没有时,那么我的规则不起作用。
...因为我希望至少需要一个文件,如何解决这个问题?
项目有许多照片,至少需要一张...
实际上,它应该是模型验证,因为您要做的是在两者之间创建“项目具有一对 M 照片”关系。所以这个验证应该在 Project 模型的 beforeValidate 函数上完成:
项目模型
function beforeValidate(){
if( !isset($this->data['Photo']) || count($this->data['Photo']) == 0)
return false;
else
return true;
}
其余的将由 CakePHP 的验证规则正确处理。
它应该被视为应用程序级逻辑而不是模型验证。
强制用户从控制器上传至少一张照片。
假设您有多个上传字段
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()
}
}