File 如何强制上传文件
我对这个有点陌生, 我有一个带有属性文件id的模型,但它将显示为文件。我应该强制这样做。但是当用户上传文件时,我会将文件路径和所有内容存储在文件表中。从表中获取id并将其存储在我的模型中 有谁能告诉我,我怎样才能使文件上传成为创建时必须的,而不是更新时必须的 我上传文件的代码是:File 如何强制上传文件,file,file-upload,yii,validation,File,File Upload,Yii,Validation,我对这个有点陌生, 我有一个带有属性文件id的模型,但它将显示为文件。我应该强制这样做。但是当用户上传文件时,我会将文件路径和所有内容存储在文件表中。从表中获取id并将其存储在我的模型中 有谁能告诉我,我怎样才能使文件上传成为创建时必须的,而不是更新时必须的 我上传文件的代码是: <?php echo $form->labelEx($model,'file'); ?> <?php echo $form->
<?php echo $form->labelEx($model,'file'); ?>
<?php echo $form->fileField($model, 'file');?>
<?php echo $form->error($model,'file'); ?>`
`
工作正常。但我需要将其强制用于当前的模型。我需要在文件模型或当前模型的规则函数中设置为必需的吗
谢谢,最简单的方法是在模型规则中:
array('file', 'required','on'=>'insert'),
然后,它仅在插入时需要,而不在更新时需要
另一种方法是使用前验证或后验证方法:
protected function afterValidate(){
if($this->isNewRecord){
if(!isset($this->file)){ //Not sure about handling files if this works.
$this->addError("file","Not file selected. Please choose a file to upload.");
return false;
}
}
return parent::afterValidate();
}
我将这个文件存储在其他模型(表)中,但是获取它的id并将文件id存储在我的模型中问题是,如果我不使用必需的,它工作正常。如果我使用这个:array('file','required','on'=>'insert')或array('file','required'),它再次表示file不能为空(即使我上传文件):(尝试
'create'
而不是insert。我认为这是正确的上下文。这是正确的..但不起作用:(asterick(*)如果我这样做,则文件字段中不会出现必填标记。实际上,我需要获取我的模型的文件id(文件id是我的模型的属性)。此文件id将是我为其存储的文件的id线数组('file','required','on'=>'insert'),对我有效。+1