Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/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
File 如何强制上传文件_File_File Upload_Yii_Validation - Fatal编程技术网

File 如何强制上传文件

File 如何强制上传文件,file,file-upload,yii,validation,File,File Upload,Yii,Validation,我对这个有点陌生, 我有一个带有属性文件id的模型,但它将显示为文件。我应该强制这样做。但是当用户上传文件时,我会将文件路径和所有内容存储在文件表中。从表中获取id并将其存储在我的模型中 有谁能告诉我,我怎样才能使文件上传成为创建时必须的,而不是更新时必须的 我上传文件的代码是: <?php echo $form->labelEx($model,'file'); ?> <?php echo $form->

我对这个有点陌生, 我有一个带有属性文件id的模型,但它将显示为文件。我应该强制这样做。但是当用户上传文件时,我会将文件路径和所有内容存储在文件表中。从表中获取id并将其存储在我的模型中

有谁能告诉我,我怎样才能使文件上传成为创建时必须的,而不是更新时必须的

我上传文件的代码是:

                <?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