【问题标题】:how to make file upload mandatory yii如何使文件上传强制yii
【发布时间】:2012-12-27 12:58:34
【问题描述】:

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

谁能告诉我如何使文件上传强制创建而不是更新

我的文件上传代码是:

                <?php echo $form->labelEx($model,'file'); ?>
                <?php echo $form->fileField($model, 'file');?>
                <?php echo $form->error($model,'file'); ?>`

它工作正常。但我需要对当前模型强制执行此操作。我是否需要在文件模型或当前模型的规则功能中要求它?

谢谢,

【问题讨论】:

    标签: file file-upload yii validation


    【解决方案1】:

    最简单的方法是在模型规则中:

    array('file', 'required','on'=>'insert'),
    

    那么它只需要插入而不是更新。

    另一种方法是使用 before 或 afterValidate 方法:

    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'), or array('file', 'required') 它再次说文件不能为空(即使我上传文件):(
    • 尝试'create' 而不是插入。我认为这是正确的上下文。
    • 那是正确的..但不起作用:( asterick(*) required mark is not come for file field if I'm doing so..actually I need to get file_id for my model(file_id is我的模型的属性)。这个文件 id 将是我为它存储的文件的 id
    • 线阵列('file', 'required','on'=>'insert')对我有用。 +1
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    相关资源
    最近更新 更多