如果文件字段不为空,我正在尝试验证字段。因此,如果有人试图上传文件,我需要验证另一个字段以确保他们选择了他们正在上传的内容,但是我不知道如何查看或仅在字段不为空时运行规则。
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('full_name, gender_id','required'),
array('video', 'file', 'types'=>'mp4', 'allowEmpty' => true),
array('audio', 'file', 'types'=>'mp3', 'allowEmpty' => true),
array('video','validateVideoType'),
);
}
public function validateVideoType() {
print_r($this->video);
Yii::app()->end();
}
因此,无论我是否上传了某些内容,this->video
始终为空。如何检查是否设置了该变量?
答案 0 :(得分:2)
必须正确定义自定义验证功能。它有两个参数$attribute
& $params
。
public function validateVideoType($attribute, $params) {
print_r($this->video);
Yii::app()->end();
}
现在,您应该编写自定义方式进行验证。 我相信这样会很好。
答案 1 :(得分:0)
您可以使用jQuery / javascript进行检查,其中'new_document'是输入文件字段的名称。
if ($("#new_document").val() != "" || $("#new_document").val().length != 0) {
//File was chosen, validate requirements
//Get the extension
var ext = $("#new_document").val().split('.').pop().toLowerCase();
var errortxt = '';
if ($.inArray(ext, ['doc','docx','txt','rtf','pdf']) == -1) {
errortxt = 'Invalid File Type';
//Show error
$("#document_errors").css('display','block');
$("#document_errors").html(errortxt);
return false;
}
//Check to see if the size is too big
var iSize = ($("#new_document")[0].files[0].size / 1024);
if (iSize / 1024 > 5) {
errortxt = 'Document size too big. Max 5MB.';
//Show error
$("#document_errors").css('display','block');
$("#document_errors").html(errortxt);
return false
}
} else {
//No photo chosen
//Show error
$("#document_errors").css('display','block');
$("#document_errors").html("Please choose a document.");
return false;
}
这段代码显然不能完美满足您的需求,但可能需要将您需要的内容组合在一起。